2017-05-31 60 views
0

我有有一个像访问从文本文件,双击词典数据在它

{"0":{"Name":"ABC","Age":30,"City":"XYZ"},"1":{"Name":"LMN","Age":20,"City":"PQR"}} 

我要导入该文本文件和读取字典数据的文本文件。

file = open('text_file.txt','r') 

dictn = eval(file.read()) 

print(dictn) 

此代码。但没有得到正确的结果。

任何人都可以告诉我如何阅读这种类型的文件,它有使用Python的双字典。

预先感谢您

+3

做**不**使用'eval' ... –

+0

刚刚移除eval就能解决问题吗? –

+0

@ Anirudha.I:不,但'eval'是不安全的:在这里你让自己容易受到代码注入的影响。 –

回答

0

你看到的是一个JSON文件,你可以简单地使用:

import json 

with open('text_file.txt','r') as file: 
    dictn = json.load(file) 
print(dictn)
0

这是一个JSON对象,你可以阅读:

import json 

data = json.load(open('text_file.txt', 'r')) 
0

您也可以使用ast模块中的literal_eval而不是使用eval这不安全。

这是你如何能做到这一点的例子:

from ast import literal_eval as le 

with open("new_data", 'r') as fp: 
    data = le(fp.read()) 

print(data) 

输出:

{'0': {'Age': 30, 'City': 'XYZ', 'Name': 'ABC'}, '1': {'Age': 20, 'City': 'PQR', 'Name': 'LMN'}} 
0

您还可以使用yaml库从pyyaml

进口YAML

with open('text_file.txt', 'r') as f: 
    dictn = f.read() 
    print(dictn) 
    print(type(dictn)) 
    result = yaml.load(dictn) 
    print(result) 
    print(type(result))