从文件中读取列表,并将其转换为Python词典列表

时间:2013-07-22 11:44:26

标签: python file-io dictionary

假设我从一个名为'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('},')

我仍然需要将它放入字典中。是否有更好/更清洁的方法来做到这一点?

3 个答案:

答案 0 :(得分:4)

使用ast.literal_eval

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变量

访问列表