需要将文本文件中的以下内容用冒号分割,并存储为键值对。但如果同一行出现多次则不起作用。
with open(textfile.txt, "r+") as myfile:
for line in myfile:
v = "\n".join([x.strip() for x in line.splitlines() if ": " in x])
name, var = v.partition(": ")[::2]
myvars[name.strip()] = var
print (name , var)
但是如果同一行中有多个对(带有:),则不能拆分
这也许不是最漂亮的解决方案,但它确实有效。我强烈建议使用正则表达式来解决此类问题。 每条线应遵守以下规定:
obts = re.findall(r'([a-zA-Z]*)(: )', line)
if len(obts) > 1:
for o in range(0, len(obts)-1):
getstr = re.findall(rf'{obts[o][0]}(.*){obts[o+1][0]}', strr)
print(obts[o][0], getstr[0][1:].strip())
getstr = re.findall(rf'{obts[-1][0]}(.*)', strr)
print(obts[-1][0], getstr[0][1:].strip())
数据字典={}
以 open(f, 'r') 作为文件: # 使用列表理解来分割每一行并构建字典 data_dict = {fields[0]: fields[1].strip() for line in file if (fields := line.strip().split(':')) and len(fields) == 2}
打印(数据字典)