我有一个文件,其中的数据存储如下:
[(4, u'name1'), (7, u'name2'), (10, u'name3'), (17, u'name4')]
现在,如果我读取该文件,则该数据将被读取为字符串。我想将它们转换成一个元组列表。等,
[(4, u'name1'), (7, u'name2'), (10, u'name3'), (17, u'name4')]
如果我使用list(data)
,它会给我:
['[', '(', '4', ',', ' ', 'u', "'", 'n', 'a', 'm', 'e', '1', "'", ')', ',', ' ', '(', '7', ',', ' ', 'u', "'", 'n', 'a', 'm', 'e', '2', "'", ')', ']']
这样做的最佳方式是什么?
答案 0 :(得分:7)
我建议使用ast.literal_eval
。这是preferred over 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')]