使用python从.txt文件中的键值对提取值
我有一个文本文件,其中包含一行,其中包含一个键和一个值。 如: 姓名:xyz 如何从python导入该文本文件并获取名称,即xyz使用python从.txt文件中的键值对提取值,python,python-import,key-value,Python,Python Import,Key Value,我有一个文本文件,其中包含一行,其中包含一个键和一个值。 如: 姓名:xyz 如何从python导入该文本文件并获取名称,即xyz open('filename.txt').readline().split(':')[1].strip() open('filename.txt')打开文件 .read读取该行 .split(“:”)[1]拆分:上的行,并获取第二个元素(值) .strip()从第一个空格中剥离值 open('filename.txt')打开文件 .read读取该行 .spl
open('filename.txt').readline().split(':')[1].strip()
打开文件open('filename.txt')
读取该行.read
拆分.split(“:”)[1]
上的行,并获取第二个元素(值):
从第一个空格中剥离值.strip()
打开文件open('filename.txt')
读取该行.read
拆分.split(“:”)[1]
上的行,并获取第二个元素(值):
从第一个空格中剥离值.strip()
from ConfigParser import SafeConfigParser
cf_parser = SafeConfigParser()
cf_parser.read("file")
name = cf_parser.get("section", "name")
然后,该文件可能看起来像:
[section]
name = xyz
根据用例的不同,如果需要在那里存储更多的值,我认为最干净的解决方案是使用python中的配置模块。在这里,您不需要自己解析任何内容: 除此之外,您还可以按照注释中的建议读取该文件 这可能是这样的:
from ConfigParser import SafeConfigParser
cf_parser = SafeConfigParser()
cf_parser.read("file")
name = cf_parser.get("section", "name")
然后,该文件可能看起来像:
[section]
name = xyz
如果文件名为keyfile.txt,则此工作:
f = open('keyfile.txt')
s = f.readline()
s.split()[1]
如果文件名为keyfile.txt,则此工作:
f = open('keyfile.txt')
s = f.readline()
s.split()[1]
试试看。它使用列表理解,并使用Python 2.7在我的本地机器上处理像您这样的文件
with open("your_file.txt", "r") as file:
rows = ( line.split(':') for line in file)
dict = { row[0]:row[1] for row in rows }
for item in dict:
print dict[item]
试试看。它使用列表理解,并使用Python 2.7在我的本地机器上处理像您这样的文件
with open("your_file.txt", "r") as file:
rows = ( line.split(':') for line in file)
dict = { row[0]:row[1] for row in rows }
for item in dict:
print dict[item]
它们是如何分开的,键和值?每行一个键值?
key,value=open('filename.txt').read().strip().split(':')
我的意思是。。。键和值之间的分隔符是什么?它是一个冒号,像上面假设的用户一样,还是别的什么?@omu_negrou在问题中说Name:xyz
它们是如何分开的,键和值?每行一个键值?key,value=open('filename.txt').read().strip().split(':')
我的意思是。。。键和值之间的分隔符是什么?它是一个冒号,像上面假设的用户一样,还是别的什么?@omu_negrou在问题中说Name:xyz
您只需调用strip
一次即可;要么在结尾,要么在中间,但是用<代码>分裂(':')< /代码>。另外,为了避免错误,如果文本包含Key:Value
(无空格)或Key:Value
(两个空格),用readline()
替换read()
也可能是一个好主意?这样,我的解决方案就更可靠了。但是我同意使用readline()
而不是read()
删除中间的strip()
并尝试不带空格或双空格的情况。是的,中间的strip()
是不必要的:)您只需调用strip
一次即可;要么在结尾,要么在中间,但是用<代码>分裂(':')< /代码>。另外,为了避免错误,如果文本包含Key:Value
(无空格)或Key:Value
(两个空格),用readline()
替换read()
也可能是一个好主意?这样,我的解决方案就更可靠了。但是我同意使用readline()
而不是read()
删除中间的strip()
并尝试不带空格或双空格的情况。是的,中间的strip()
是不必要的:)