我必须将一个字符串拆分成列表。 输入如下:
data = '''00402,
"0042 01,5",5
0042 02,3
"0042 02,5",1
"0042 05,5",4
"0042 05,5X05,5",7'''
预期输出如下:
['00402'],['0042 01,5', '5'],['0042 02', '3'],['0042 02,5', '1'],['0042 05,5', '4'],['0042 05,5X05,5', '7']
到目前为止,我试图做的是:
temp_lines = filter(lambda x: x != '', data.split('\n'))
lines = []
for line in temp_lines:
lines.append(re.split(';|,|\*|\t', line.replace("\r", "")))
print lines
这没有产生所需的输出。请帮助解决这个问题。
答案 0 :(得分:3)
csv
模块可以在这里为您提供帮助:
>>> import csv
>>> data = '''00402,
... "0042 01,5",5
... 0042 02,3
... "0042 02,5",1
... "0042 05,5",4
... "0042 05,5X05,5",7'''
>>> result = list(csv.reader(data.splitlines()))
>>> result
[['00402', ''], ['0042 01,5', '5'], ['0042 02', '3'], ['0042 02,5', '1'], ['0042 05,5', '4'], ['0042 05,5X05,5', '7']]
唯一的问题是第一个子列表中的空字符串,因为data
的第一行有一个不遵循其他行格式的奇怪格式。如果空字段困扰您,请将其过滤掉:
>>> [[x for x in sub if x] for sub in result]
[['00402'], ['0042 01,5', '5'], ['0042 02', '3'], ['0042 02,5', '1'], ['0042 05,5', '4'], ['0042 05,5X05,5', '7']]