我有一个包含Python字典的txt文件,并以以下方式打开它:
with open('file') as f:
test = list(f)当我看测试时,结果是一个元素的列表。第一个元素是字典的一个字符串(其中还包含其他字典),因此它看起来如下:
["ID": 1, date: "2016-01-01", "A": {name: "Steve", id: "534", players:{last: "Smith", first: "Joe", job: "IT"}}是否有任何方法可以将其存储为字典,而不必找到一种方法来确定不同键和相应值开始/结束的字符的索引?或者是否有可能以将数据识别为字典的方式在文件中读取?
发布于 2016-02-01 05:26:49
如果正在读取json文件,则可以使用json模块。
import json
with open('data.json') as f:
data = json.load(f)如果您确信正在读取的文件包含python字典,则可以使用内置的ast.literal_eval将这些字符串转换为Python字典:
>>> import ast
>>> a = ast.literal_eval("{'a' : '1', 'b' : '2'}")
>>> a
{'a': '1', 'b': '2'}
>>> type(a)
<type 'dict'>还有另一种方法,eval。但是使用ast.literal_eval会更好。这个回答会解释原因。
发布于 2016-02-01 05:30:20
您可以使用json模块
用于编写
import json
data = ["ID": 1, date: "2016-01-01", "A": {name: "Steve", id: "534", players:{last: "Smith", first: "Joe", job: "IT"}}
with open("out.json", "w") as f:
json.dump(data)用于阅读
import json
with open("out.json", "w") as f:
data = json.load(f)
print data发布于 2016-02-01 05:35:48
当您从文件中读取eval()时,只需使用它。
例如:
>>> f = open('file.txt', 'r').read()
>>> mydict = eval(f)
>>> type(f)
<class 'str'>
>>> type(mydict)
<class 'dict'>https://stackoverflow.com/questions/35123449
复制相似问题