如何以key = value格式解析文件

时间:2016-02-09 17:42:01

标签: python

我有一个格式为

的文本文件
key1=value1
key2=value2
key3=value3

阅读它的最佳方式是什么,以便我可以使用myObject.key1myObject["key1"]等形式访问值?

4 个答案:

答案 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