2016-07-23 35 views
0

我有一個列表,下面的模式,我想擺脫"這是出現在每個子列表的開始和結束。我試過替換,但是它們不是列表的屬性,因此給出了AttributeError刪除python列表中的附加引號

lst = [["'123', 'Name1', 'Status1'"], ["'234', 'Name2', 'Status2'"]] 

我找下面是我最終的結果是:

lst = [['123', 'Name1', 'Status1'], ['234', 'Name2', 'Status2']] 

請建議如何從每個子列表中刪除雙引號。

+0

你可以分享你想要得到的輸出嗎?這會使問題更清楚。 – Mureinik

+0

你知道目前每個列表只包含1個字符串項目嗎? –

+0

你能解釋一下你在找什麼輸出嗎?目前,'lst'包含兩個列表,每個列表包含一個字符串。 (並且這些字符串都不包括雙引號。) – smarx

回答

3

可以刪除逗號與replace後使用shlex.split

import shlex 

lst = [["'123', 'Name1', 'Status1'"], ["'234', 'Name2', 'Status2'"]] 
r = [shlex.split(x[0].replace(',', '')) for x in lst] 
# [['123', 'Name1', 'Status1'], ['234', 'Name2', 'Status2']] 
+1

shlex :) – marmeladze

1

這應該做的伎倆:

result = [[element.strip("'") for element in sub_list[0].split(', ')] for sub_list in lst] 

我假設的字符串格式爲「字符串包裹在用逗號和空格分隔單引號。」請注意,我的代碼可能不會像[["'A comma here, changes the parsing', 'no comma here'"], ...]這樣的輸入做預期的事情。 (這看起來我的代碼像在清單三個要素,而我想象的要考慮兩項。)

編輯

這或許更容易理解相比更長的列表理解爲:

result = [] 
for sub_list in lst: 
    s = sub_list[0] 
    result.append([element.strip("'") for element in s.split(', ')]) 
+0

It works,thanks – ankitpandey