2016-07-23 133 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