我有一个txt文件,格式如下:
Intestinal infectious diseases (001-003)
001 Cholera
002 Fever
003 Salmonella
Zoonotic bacterial diseases (020-022)
020 Plague
021 Tularemia
022 Anthrax
External Cause Status (E000)
E000 External cause status
Activity (E001-E002)
E001 Activities involving x and y
E002 Other activities
其中,以3-整数代码/E+3-整数代码/V+3-整数代码开头的每一行都是前面标题的值,这是我的字典的键。在我看到的其他问题中,可以使用列或冒号来解析每一行以形成键/值对,但是我的txt文件的格式不允许这样做。你知道吗
这是一种将这样的txt文件放入字典的方法,其中键是组名,值是代码+疾病名?你知道吗
我还需要将代码和疾病名称解析到第二个字典中,因此我最终得到了一个包含组名称作为键的字典,值是第二个字典,代码作为键,疾病名称作为值。你知道吗
def process_file(filename):
myDict={}
f = open(filename, 'r')
for line in f:
if line[0] is not int:
if line.startswith("E"):
if line[1] is int:
line = dictionary1_values
else:
break
else:
line = dictionary1_key
myDict[dictionary1_key].append[line]
所需的输出格式为:{"Intestinal infectious diseases (001-003)": {"001": "Cholera", "002": "Fever", "003": "Salmonella"}, "Zoonotic bacterial diseases (020-022)": {"020": "Plague", "021": "Tularemia", "022": "Anthrax"}, "External Cause Status (E000)": {"E000": "External cause status"}, "Activity (E001-E002)": {"E001": "Activities involving x and y", "E002": "Other activities"}}
在Python控制台中测试:
警告:文件中的第一行必须只是一个“rootkey”!不是“子键”或数据!否则原因可能是上升错误:-)
注意:也许您应该删除第一个“E”字符。还是做不到?你需要把这个“E”字留在什么地方吗?你知道吗
尝试使用正则表达式来确定它是标头还是疾病
一种解决方案是使用正则表达式来帮助您描述和解析此文件中可能遇到的两种类型的行:
这使您可以非常轻松地检查遇到的线路类型,并根据需要将其分开:
使用它来重新处理函数,我们可以编写以下内容:
相关问题 更多 >
编程相关推荐