row = ['0', '1', 'NDP;LIBERAL;GREEN;CPC', '1;4;2;3', 'NO;YES;NO;NO']

转换成

'''SAMPLE_DATA_1 = [[0, 1, ['NDP', 'LIBERAL', 'GREEN', 'CPC'], [1, 4, 2, 3],
                  [False, True, False, False]],
                 [1, 2, ['LIBERAL', 'NDP', 'GREEN', 'CPC'], [2, 1, 4, 2],
                  [False, False, True, True]],
                 [1, 3, ['GREEN', 'NDP', 'CPC', 'LIBERAL'], [1, 5, 1, 2],
                  [False, True, False, True]],
                 [1, 4, ['CPC', 'LIBERAL', 'NDP', 'GREEN'], [5, 0, 3, 2], 
                  [True, False, True, True]]]
'''
SAMPLE_DATA_1[0]

 定义一个函数,然后输入clean_data([row])  

[注]一定是[row],不是row,因为row只是List[str]

def clean_data(data: List[List[str]]) -> None:
    for l in data:
        l[0] = int(l[0])
        l[1] = int(l[1])
        l[2] = l[2].split(';')
        l[3] = l[3].split(';')
        m = []
        for s in l[3]:
            m.append(int(s))
        l[3] = m
        l[4] = l[4].split(';')
        k = []
        for s in l[4]:
            if s == 'NO':
                s = 0
            else: s = 1
            k.append(bool(s))
        l[4] = k

解释:

data类型为List[List[str]],对应[row]

即l对应row

l[0]对应'0', l[0] = int(l[0])转变成0

l[1]同理;

l[2]对应'NDP;LIBERAL;GREEN;CPC',首先split(';')去掉;,会返回['NDP','LIBERAL','GREEN','CPC']即可

l[3]前面和l[2]一样,只不过要循环,将List里面的str变成int,即变成数组;

l[4]多少与l[3]类似,多了一个if...else换成bool

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐