我有一个格式为
的文本文件key1=value1
key2=value2
key3=value3
阅读它的最佳方式是什么,以便我可以使用myObject.key1
或myObject["key1"]
等形式访问值?
答案 0 :(得分:3)
这样的事情:
myObject = {}
with open("something.ini") as f:
for line in f.readlines():
key, value = line.rstrip("\n").split("=")
myObject[key] = value
请注意,正如下面提到的@Goodies,如果多次分配给同一个键,这将只取最后一个值。然而,添加一些错误处理是微不足道的:
myObject = {}
with open("something.ini") as f:
for line in f.readlines():
key, value = line.rstrip("\n").split("=")
if(not key in myObject):
myObject[key] = value
else:
print "Duplicate assignment of key '%s'" % key
答案 1 :(得分:1)
with open('your_file_name') as f:
content = f.readlines()
myDict = {}
for line in content:
a, b = line.split('=')
myDict += {a:int(b)}
答案 2 :(得分:1)
经典的单线...
x = dict((kv.split('=') for kv in (l.strip('\n') for l in open('hello.txt'))))
结果是:
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
答案 3 :(得分:0)
你可以用正则表达式
来做import re
with open('/path/to/file', 'r') as f:
matches = re.findall(r'^(.+)=(.*)$', f.read(), flags=re.M)
d = dict(matches)
print d['key']
请注意,如果您的文件中有重复的密钥,则找到的最后一个密钥会影响其他密钥。
如果您希望能够d.key3
,则可以使用bunch
包
from bunch import Bunch
d = Bunch(matches)
print d.key3