[英]Can ConfigParser be used to read sections containing column data?
我有大型输入文件,格式如下:
[A11N]
# label value error calculated
0 1.43262100e+06 2.12071439e+04 1.43261891e+06
1 3.05578100e+05 2.12071439e+04 3.26592619e+05
2 3.95689900e+05 2.12071439e+04 3.84788096e+05
3 4.90816000e+05 2.12071439e+04 4.64785030e+05
2 5.42676800e+05 2.12071439e+04 5.42395048e+05
[B12N]
# label value error calculated
0 1.43262100e+06 2.12071439e+04 1.43261891e+06
1 3.05578100e+05 2.12071439e+04 3.26592619e+05
2 3.95689900e+05 2.12071439e+04 3.84788096e+05
3 4.90816000e+05 2.12071439e+04 4.64785030e+05
2 5.42676800e+05 2.12071439e+04 5.42395048e+05
[C13N]
# label value error calculated
0 1.43262100e+06 2.12071439e+04 1.43261891e+06
1 3.05578100e+05 2.12071439e+04 3.26592619e+05
2 3.95689900e+05 2.12071439e+04 3.84788096e+05
3 4.90816000e+05 2.12071439e+04 4.64785030e+05
2 5.42676800e+05 2.12071439e+04 5.42395048e+05
请注意,label 列将包含重复值,因此我不能简单地在“标签”和“值”列之间添加“=”符号。 我通常使用“genfromtxt”读取这样的列数据,但这与部分标签不同。
可以使 ConfigParser.read 来处理这样的部分吗? 还是逐行处理是解析输入文件的唯一方法?
首先遍历文件,使用“部分”( [A11N]
等)作为字典键,然后将剩余的行作为值推送到列表中。
完成后,您可以遍历字典,将列表处理为 csv:
import csv
csvdata = {}
with open('data.txt', newline='') as csvfile:
category = ''
for line in csvfile.readlines():
line = line.strip()
if line.startswith('['):
category = line
csvdata[category] = []
else:
csvdata[category].append(line)
for cat, row in csvdata.items():
# Print the section name
print(cat)
reader = csv.reader(row, delimiter=' ')
for data in reader:
# Print the list of row fields
print(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.