如何用方括号解析文件?

问题描述

我有一个这样的数据文件:


[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'}
]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...