[英]Reading dictionary structure from text file in python
我在定義python字典的位置有文件:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First', 'Friends': {'Emil':1, 'Frank':0} };
我想讀這本字典,並在python代碼中使用它的元素。 我最終得到以下代碼:
#!/usr/bin/python
import sys
import os
import ast
import re
from pprint import pprint as pp
def readObjFromFile(file):
with open (file, "r") as myfile:
data=myfile.read()
data = re.sub("^#.*", "", data)
data = data.replace('\n', '')
data = data.split("=", 1)[1].split(";", 1)[0].lstrip()
data = ast.literal_eval(data)
return data
if __name__ == "__main__":
if len(sys.argv[1:]) == 1:
dict = readObjFromFile(sys.argv[1])
print type(dict)
pp(dict)
else:
print "Pass file from which object will be read"
exit
這個作品也為這個更大的字典。 我想問一下是否有更好的方法? 我知道pickle
模塊,但這不是我想要的,因為它以自己的格式存儲數據。 由於與python dicts的相似性,我正在考慮用於解析json的模塊,但是我不知道這種方法是否安全。
我假設您無法控制文件格式,而是從某個地方將其交給您。 它與json非常接近,因此我打算將其設為json。 我會做如下的事情:
lines = []
with open(file) as f:
for line in f:
if line[0] == "#":
continue
l = line.strip().split("=")[-1].strip(";")
lines.append(re.sub("'", "\"", l)
return json.loads("".join(lines))
您擁有的文件實際上代表了字典的人工解釋版本。 我們可以閱讀它,看看如何將一個變量分配給字典。 您真正想做的是將dict以程序友好的格式存儲。 JSON是此格式的完美使用。 其他格式包括XML和YAML,但是Python可以很容易地原生讀取JSON輸入。
如果仔細查看示例,您會發現示例數據集具有包含嵌套字典的字典。 JSON是針對此類用例而構建的。 因此,帶有您上面的數據的JSON文件將如下所示:
{
"Name": "Zara",
"Age": 7,
"Class": "First",
"Friends": {
"Emil":1,
"Frank":0
}
}
請注意,子詞典是JSON文件結構的一部分。 另請注意,使用雙引號。
現在,您可以輕松地讓python為您完成工作:
import json
from os import open
from pprint import pprint
data = open(filename).read()
d = json.loads(data)
pprint(d)
您可以使用以下命令訪問子模塊:
d['Friends]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.