将列表的字符串转换为列表类型对象

mym*_*men 2 python file-io list

我有一个文件,其中数据存储如下:

[(4, u'name1'), (7, u'name2'), (10, u'name3'), (17, u'name4')]
Run Code Online (Sandbox Code Playgroud)

现在,如果我读取该文件,则该数据将被读取为字符串.我想将它们转换成一个元组列表.喜欢,

[(4, u'name1'), (7, u'name2'), (10, u'name3'), (17, u'name4')]
Run Code Online (Sandbox Code Playgroud)

如果我使用list(data)它给我喜欢:

['[', '(', '4', ',', ' ', 'u', "'", 'n', 'a', 'm', 'e', '1', "'", ')', ',', ' ', '(', '7', ',', ' ', 'u', "'", 'n', 'a', 'm', 'e', '2', "'", ')', ']']
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Cor*_*mer 7

我建议使用ast.literal_eval.这是优先的eval.

>>> s = "[(4, u'name1'), (7, u'name2'), (10, u'name3'), (17, u'name4')]"
>>> from ast import literal_eval
>>> literal_eval(s)
[(4, 'name1'), (7, 'name2'), (10, 'name3'), (17, 'name4')]
Run Code Online (Sandbox Code Playgroud)