【问题标题】:How can I remove the quote marks and retrieve the list in python?如何删除引号并在 python 中检索列表?
【发布时间】:2017-07-26 06:09:32
【问题描述】:

我有一个这样的字符串列表:

"['USA', 'Canada', 'Mexico', 'Brazil']"

我想从字符串中检索列表,如下所示:

['USA', 'Canada', 'Mexico', 'Brazil']

我该怎么做? Itertools 或列表函数没有给我正确的结果。 谢谢

【问题讨论】:

  • 其实"["USA", "Canada", "Mexico", "Brazil"]" 不是python字符串。我想你想说你的字符串是'["USA", "Canada", "Mexico", "Brazil"]' 和双'
  • @ChihebNexus 我的错。现在已经修好了。
  • @ChihebNexus 我知道你的意思。但是,如果有一个文件data.log,其内容是"["USA", "Canada", "Mexico", "Brazil"]"。如何处理?
  • @CHENJIAN 在这种情况下,您需要解析数据并将外部" 替换为',否则您将获得无效的python 字符串。一种方法是使用regex
  • @ChihebNexus 比这个问题多一步。我明白了,谢谢。

标签: python string list itertools


【解决方案1】:

您可以使用eval 将字符串评估为列表:

 eval('["USA", "Canada", "Mexico", "Brazil"]')

在 python shell 上执行,给出一个列表:

>>> eval('["USA", "Canada", "Mexico", "Brazil"]')
['USA', 'Canada', 'Mexico', 'Brazil']
>>> 

【讨论】:

  • 非常感谢。我就是个菜鸟。我完全忘记了 eval 并且很恐慌。再次感谢。
  • @0x1,不客气。如果这回答了您的问题,请您接受答案吗?
  • @ChihebNexus,必须进行评估是不好的设计。绝对不建议设计以这种方式工作的软件。但是,我没有软件的所有上下文,所以我给出了一个快速的脏答案。
  • @MedAli 是的。否则,您对这个问题的回答是正确的:-)
【解决方案2】:

你可以像这个例子一样使用ast模块中的literal_eval

from ast import literal_eval as le
data = le('["USA", "Canada", "Mexico", "Brazil"]')
print(data)

输出:

['USA', 'Canada', 'Mexico', 'Brazil']

另外,不要使用eval(),而是使用literal_eval()。有关详细信息,请参阅此answer

【讨论】:

  • 这很有启发性。我不知道。谢谢!
猜你喜欢
  • 2021-04-28
  • 1970-01-01
  • 2020-04-05
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多