Python使用键从文本中提取值

2024-09-28 12:12:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下格式的文本文件Key Value

--START--
FirstName Kitty
LastName McCat
Color Red
random_data
Meow Meow
--END--

我想将文本中的特定值提取到变量或dict中。例如,如果我想提取LastName和{}的值,最好的方法是什么?在

random_data可以在文件中的任何位置,并且跨越多行。在

我曾考虑过使用regex,但我关心的是性能和可读性,因为在实际代码中,我有许多不同的键要提取。在

我也可以循环每一行,并检查每一个键,但当有10个以上的键时,这是相当混乱的。例如:

^{pr2}$

希望有更干净一点的


Tags: keydatavalue格式randomredfirstnamestart
3条回答
tokens = ['LastName', 'Color']  
dictResult = {} 
with open(fileName,'r') as fileHandle: 
   for line in fileHandle:
      lineParts = line.split(" ")
      if len(lineParts) == 2 and lineParts[0] in tokens:
           dictResult[lineParts[0]] = lineParts[1]

此版本允许您选择性地指定标记

import re
​
s = """--START--
FirstName Kitty
LastName McCat
Color Red
random_data
Meow Meow
--END--"""

tokens = ["LastName", "Color"]
if len(tokens) == 0:
    print(re.findall("({0}) ({0})".format("\w+"), s))
else:
    print( list((t, re.findall("{} (\w+)".format(t), s)[0]) for t in tokens))

输出

^{pr2}$

假设你的文件在一个叫做样本文本.txt,这就行了。它从键值列表创建字典映射。在

import re  
with open('sampletxt.txt', 'r') as f:
    txt = f.read()
keys = ['FirstName', 'LastName', 'Color']
d = {}
for key in keys:
    d[key] = re.findall(key+r'\s(.*)\s*\n*', txt)

相关问题 更多 >

    热门问题