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

Python 如何以key=value格式解析文件,python,Python,我有一个格式为的文本文件 key1=value1 key2=value2 key3=value3 读入它的最佳方式是什么,这样我就可以访问像myObject.key1或myObject[“key1”]?这样的格式的值: myObject = {} with open("something.ini") as f: for line in f.readlines(): key, value = line.rstrip("\n").split("=") myObject[key]

我有一个格式为的文本文件

key1=value1
key2=value2
key3=value3
读入它的最佳方式是什么,这样我就可以访问像
myObject.key1
myObject[“key1”]

这样的格式的值:

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
大概是这样的:

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

如果我是你,我会用字典。如果您的应用程序接受使用字典,请尝试此操作

with open('your_file_name') as f:
    content = f.readlines()

myDict = {}    

for line in content:
    a, b = line.split('=')
    myDict += {a:int(b)}

如果我是你,我会用字典。如果您的应用程序接受使用字典,请尝试此操作

with open('your_file_name') as f:
    content = f.readlines()

myDict = {}    

for line in content:
    a, b = line.split('=')
    myDict += {a:int(b)}

经典的一行

x = dict((kv.split('=') for kv in (l.strip('\n') for l in open('hello.txt'))))
其结果是:

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

经典的一行

x = dict((kv.split('=') for kv in (l.strip('\n') for l in open('hello.txt'))))
其结果是:

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

你可以用正则表达式来做

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
,可以使用该软件包


你可以用正则表达式来做

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
,可以使用该软件包


我想知道这是否有用。。。我自己从来没用过。哦,是的。configparser是一个非常有用的模块。您可以使用
key=value
key:value
。configparser可能有用,但前提是您能够稍微重新格式化文本文件。文本文件必须看起来有点不同。。。特别是afaik,您需要定义一些部分…可能的副本我想知道在这里是否有用。。。我自己从来没用过。哦,是的。configparser是一个非常有用的模块。您可以使用
key=value
key:value
。configparser可能有用,但前提是您能够稍微重新格式化文本文件。文本文件必须看起来有点不同。。。特别是afaik,您需要定义一些部分…可能重复的几乎太简单和工作。请记住,如果你有一个副本,它将采取最后一个值。几乎太简单,工作。请记住,如果您有一个副本,它将采用最后一个值。