2016-04-28 146 views
1

我必須將字符串拆分爲列表。 輸入如下:將雙引號拆分爲列表

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

您獲得的輸出是什麼? –

+0

我得到了['00402',''],[''0042 01','5'','5'],['0042 02','3'],[''0042 02',' 5'','1'],[''0042 05','5'','4'],[''0042 05','5X05','5'','7']] – Jothimani

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