问题描述
我有一个这样的数据文件:
[TOP]
Name= 1
Plic= 11
Glab= 5487
Gendr= 2261
Mars= 0
[ENDTOP]
[TOP]
Name= 2
Plic= 13
Glab= 5556
Gendr= 2321
Mars= E
[ENDTOP]
[TOP]
Name= 2
Plic= 55
Glab= 4012
Gendr= 3758
Mars= 2
[ENDTOP]
我需要用 python3 将其解析为带有标题的 csv 文件:
Name;Plic;Glab;Gendr;Mars
1;11;5487;2261;0
2;13;5556;2321;E
2;55;4012;3758;2
但我坚持了下来;我尝试使用 dict 但它只保留最后一个键:
for line in f.readlines():
line = ligne.split('=')
if len(line) == 2:
table[line[0].strip()]= line[1].strip()
有人可以帮助我实现它吗?
解决方法
这是一种非常简单的文件格式。此代码将文件解析为字典列表。从那里保存到 csv 应该很容易。
all_data = []
for line in f.readlines():
if line.strip() == "[TOP]":
# Start - create empty dictionary
line_data = {}
elif line.strip() == "[ENDTOP]":
# End - save dictionary to list
all_data.append(line_data)
else:
# Data - save to dictionary
data = line.split('=')
if len(data) == 2:
line_data[data[0]] = data[1].strip()
产生:
[
{'Name': '1','Plic': '11','Glab': '5487','Gendr': '2261','Mars': '0'},{'Name': '2','Plic': '13','Glab': '5556','Gendr': '2321','Mars': 'E'},'Plic': '55','Glab': '4012','Gendr': '3758','Mars': '2'}
]