【问题标题】:Remove additional quotes from python list从 python 列表中删除额外的引号
【发布时间】:2016-07-24 02:39:17
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你能分享你想要得到的输出吗?这会让问题更清楚。
  • 您知道目前每个列表只包含 1 个字符串项吗?
  • 您能解释一下您要查找的输出吗?目前,lst 包含两个列表,每个列表都包含一个字符串。 (而且这些字符串都不包含双引号。)
  • 我知道每个列表只包含一个不正确的项目,我想将其设为三个。我已经更新了所需的输出。

标签: python


【解决方案1】:

您可以在删除逗号后使用shlex.splitreplace

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

【讨论】:

  • shlex 的荣誉 :)
【解决方案2】:

这应该可以解决问题:

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(', ')])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2012-01-15
    • 2011-08-18
    • 2018-04-10
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多