我有一个下面的模式列表,我想摆脱每个子列表的开头和结尾出现的"
。我尝试替换,剥离但它们不是列表的属性,因此给出了AttributeError
。
lst = [["'123', 'Name1', 'Status1'"], ["'234', 'Name2', 'Status2'"]]
我正在寻找以下作为我的最终结果:
lst = [['123', 'Name1', 'Status1'], ['234', 'Name2', 'Status2']]
请建议如何从每个子列表中删除双引号。
答案 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(', ')])