Python 3.x 如何将文件中的键、值对存储在字典中?

Python 3.x 如何将文件中的键、值对存储在字典中?,python-3.x,dictionary,text-files,Python 3.x,Dictionary,Text Files,我有一个input.txt文件,格式如下 A=Xyz B 数值:274:53:3 C=1190 E wqqw 价值:554 A=UrR B 数值:113:00:1 C=34 E wqqw 价值:982 我想将与a、B和E相关的数据存储在字典中,以便获得: d={ 'A':['Xyz','UrR'], “B”:['274:53:3','113:00:1'], "E:[554,"982",, } 我像下面这样做,不仅仅是存储与A相关的键、值对,因为A的值在同一行中 d={“A”:[],“B”:[

我有一个input.txt文件,格式如下

A=Xyz
B
数值:274:53:3
C=1190
E
wqqw
价值:554
A=UrR
B
数值:113:00:1
C=34
E
wqqw
价值:982
我想将与a、B和E相关的数据存储在字典中,以便获得:

d={
'A':['Xyz','UrR'],
“B”:['274:53:3','113:00:1'],
"E:[554,"982",,
}
我像下面这样做,不仅仅是存储与
A
相关的键、值对,因为
A
的值在同一行中

d={“A”:[],“B”:[],“E”:[]}
对于打开的行('input.txt'):
第一行=行。替换(“:”,“=”,1)。拆分(“=”)
如果第一行[0]中的(“A”或“B”或“E”):
k=lst_线[0]。条带()
v=lst_行[1]。替换(“\n”,”).strip()
d[k]。追加(v)
>>>d
{'A':['Xyz','UrR'],'B':[],'E':[]}

我一直在研究如何存储
B
的值,它在
Value:
之后的下一行,以及
E
的值,它在
Value:
之后的下两行,每个键似乎都有一个非常特定的逻辑,可以划分为独立的
if
条件。下面的代码根据上述条件读取相应密钥的值

d = {"A": [], "B": [], "E": []}

with open("input.txt") as file:
    while True:
        line = file.readline()  # read next line
        if not line:
            break  # break on end of file

        lst_line = line.replace(":", "=", 1).split("=")  # key from line

        if "A" in lst_line[0]:
            k = lst_line[0].strip()
            v = lst_line[1].replace("\n", "").strip()
            d[k].append(v)

        if "B" in lst_line[0]:
            k = lst_line[0].strip()
            line = file.readline()  # read next line for value i.e. if key is B value is on the next line (one line below)
            lst_line = line.replace(":", "=", 1).split("=")  # get value for B
            v = lst_line[1].replace("\n", "").strip()
            d[k].append(v)

        if "E" in lst_line[0]:
            k = lst_line[0].strip()
            file.readline()  # skip junk line
            line = file.readline()  # read next line for value i.e. for E value is two lines below.
            lst_line = line.replace(":", "=", 1).split("=")  # get value for E
            v = lst_line[1].replace("\n", "").strip()
            d[k].append(v)

print(d)
输出:

 {'A': ['Xyz', 'UrR'], 'B': ['274:53:3', '113:00:1'], 'E': ['554', '982']}

以下是如何使用正则表达式:

import re

with open('file.txt', 'r') as r:
    r = r.read()

dct = {'A': re.findall('(?<=A             \= ).*?(?= \n)',r),
       'B': re.findall('\d\d\d:\d\d:\d',r),
       'E': re.findall('(?<=Value:)\d\d\d(?!:)',r)}

print(dct)

您还可以显示语句的输出
print(d)
sure,added output。
{'A': ['Xyz', 'UrR'],
 'B': ['274:53:3', '113:00:1'],
 'E': ['554', '982']}