假设我从一个名为'info.dat'的文件中读取,其中包含:
[{'name': 'Bob', 'occupation': 'architect', 'car': 'volvo'}, {'name': 'Steve', 'occupation': 'builder', 'car': 'Ford'}]
我怎么能读到这个并把它变成一个词典列表?如果我这样做:
with open('info.dat') as f:
data = f.read()
它只是把它读成一个字符串,即使我这样做也要把它分解出来:
data = data[1:-1]
data = data.split('},')
我仍然需要将它放入字典中。是否有更好/更清洁的方法来做到这一点?
答案 0 :(得分:4)
import ast
with open('info.dat') as f:
data = ast.literal_eval(f.read())
如文档中所述,这比文档更安全,因为它“安全地评估[s]表达式节点或包含Python表达式的字符串”。
如果不安全,则会引发错误。
答案 1 :(得分:4)
使用可以读取简单Python文字(如dicts / tuples / lists)的ast.literal_eval
- 虽然不像eval
那样“强大”,但由于其更具限制性,它更安全。
from ast import literal_eval
with open('yourfile') as fin:
your_list = literal_eval(fin.read())
答案 2 :(得分:1)
也许使用eval -
eval("ld ="+open("info.dat").read())
然后使用ld
变量