0

我有一个 .txt 文件,如下所示: txt 文件示例

我想制作一个 .csv 文件,其中第一行将写入名称(键、值),然后在其下方写入每个名称的值。它应该是这样的: csv 文件示例

4

2 回答 2

0

尝试这个:

import csv

k = ['0.0', '0.25', '0.5', '0.75', '1.0', '1.25']
v = [5, 46, 597, 2882, 5398, 4]

with open("output.csv", 'w') as file:
    wr = csv.writer(file)
    wr.writerow(["keys", "values"])
    for row in zip(k, v):
        wr.writerow(row)

文件的输出.csv

keys,values
0.0,5
0.25,46
0.5,597
0.75,2882
1.0,5398
1.25,4

编辑:这是您显示的该文件中的示例数据的工作代码(即完全破解)。我正在按原样解析它,因此如果数据发生更改,您可能必须编辑代码。

内容data.txt

keys(['0.0', '10.0', '20.0', '30.0'])
values([43430, 156, 3, 1])

代码:

import ast
import csv
import re

p = re.compile(r"\((.*)\)")

with open("data.txt") as f:
    data = f.readlines()

parsed = [
    ast.literal_eval(
        ''.join(i for i in re.search(p, l.strip()).groups())
    ) for l in data
]


with open("output.csv", 'w') as file:
    wr = csv.writer(file)
    wr.writerow(["keys", "values"])
    for row in zip(*parsed):
        wr.writerow(row)

文件的内容output.csv

keys,values
0.0,43430
10.0,156
20.0,3
30.0,1

于 2020-09-09T09:20:07.203 回答
0

由于 txt 文件在导入后分为两行,因此它显示为字符串,所以这就是我要做的

import re 
f = open('textfile.txt', 'r')

#new output file
new_csv = open('output.csv' 'w')

text = f.read()
ks = text.split('\n')[0]
ve = text.split('\n')[1]
keys = re.findall(r"'(.+?)'", str(ks))
values = re.findall(r"'(.+?)'", str(ve))
for key, value in zip(keys, values):
    new_csv.write(key+','+value+'\n')

new_csv.close()
于 2020-09-09T10:50:47.203 回答