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