我有一个 .txt 文件,如下所示: txt 文件示例
我想制作一个 .csv 文件,其中第一行将写入名称(键、值),然后在其下方写入每个名称的值。它应该是这样的: csv 文件示例
尝试这个:
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
由于 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()