2017-05-31 62 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))