2017-07-26 44 views
4

我有一个列表,像这样的字符串:如何删除引号并在python中检索列表?

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

我想从字符串检索列表,像这样:

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

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

+0

其实'“[”美国“,”加拿大“,”墨西哥“,”巴西“]”'不是一个python字符串。我想你想说的是你的字符串是''''''美国','加拿大','墨西哥','巴西']''带双''''。 –

+1

@ChihebNexus我的不好。现在已经修复了。 – 0x1

+0

@ChihebNexus我知道你的意思。但是,如果有一个'data.log'文件,其内容是“[”USA“,”Canada“,”Mexico“,”Brazil“]”'。如何处理它? – CHENJIAN

回答

5

你可以评估的字符串列表使用eval

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

在Python Shell中执行此,给出了一个清单:

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

非常感谢。我是这样一个noob。我完全忘了eval并且正在恐慌。再次感谢。 – 0x1

+0

@ 0x1,不客气。如果这回答你的问题,你能请接受答案? – MedAli

+0

顺便说一句,'eval()'在现实生活中依然危险...... –

3

您可以使用literal_evalast模块这样例如:

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

输出:

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

另外,不要使用eval(),使用literal_eval()来代替。有关更多详细信息,请参阅此answer

+1

这就是恩光效果图创作。我不知道。谢谢! – 0x1