Python 将带双引号的字符串拆分为列表

Python 将带双引号的字符串拆分为列表,python,string,list,split,Python,String,List,Split,我必须把一个字符串拆分成一个列表。 输入如下: 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'] 预期产出如下: data = '''00402,

我必须把一个字符串拆分成一个列表。 输入如下:

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']
预期产出如下:

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
这没有产生所需的输出。请提供帮助。

模块可以在以下方面帮助您:

>>> 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']]
唯一的问题是第一个子列表中的空字符串,因为
数据
的第一行有一个奇怪的格式,不遵循其他行的格式。如果空字段困扰您,请将其过滤掉:

>>> [[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']]

你得到的输出是什么?我得到了这个['00402','',“'004201','5','5'],['004202','3'],['004202','5','1'],['004205','5','4'],['004205','5X05','5','7']]这就是你想要的,如果我是对的话?它看起来与您的预期输出完全相同。如果我错了,请纠正我。请仔细查看我的例外输出可能的副本