从python列表中删除其他引号

时间:2016-07-23 18:25:40

标签: python

我有一个下面的模式列表,我想摆脱每个子列表的开头和结尾出现的"。我尝试替换,剥离但它们不是列表的属性,因此给出了AttributeError

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

我正在寻找以下作为我的最终结果:

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

请建议如何从每个子列表中删除双引号。

2 个答案:

答案 0 :(得分: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 :(得分: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(', ')])