Output CSv file我目前正在尝试使用python将文件中的数据放入csv文件中。 我的数据如下:
data_list{} = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}]
我的输出应如下所示:
row t0 elems Tspan NP wave0
0 8.69E-005 4 5E-006 625 123.65
96 333.56
187 3333.78
567.89
345678.77
34E-08
首先是标题,然后是它们下面的值。除了elems和wave0之外,我成功获得了所有标题部分和行部分。
python代码:
with open('cc.csv','w', newline='') as out_file:
writer = csv.DictWriter(out_file, fieldnames=data_list[0].keys())
writer.writeheader()
for data in data_list:
writer.writerow(data)
答案 0 :(得分:0)
看起来你正在追踪data_list
变量中的词典。为了得到你想要的输出,你需要做一些工作:
您的一本词典列表:
data_list = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}]
首先,您需要定义输出列:
output_cols = ['row', 't0', 'elems', 'Tspan', 'NP', 'wave0']
然后,您需要从词典的values
创建列表,然后将*zip*
所有这些列表一起创建:
# Python2
from itertools import izip_longest
import csv
data = [data_list[0].get(x).strip().split(" ") for x in output_cols]
data = izip_longest(*data)
with open('somefile.csv','w') as outfile:
file_writer = csv.writer(outfile, delimiter="\t", lineterminator="\n")
file_writer.writerow(output_cols)
file_writer.writerows(data)
如果您使用的是python3,则from itertools import izip_longest
应替换为from itertools import zip_longest
。
请注意答案假定您的所有数据都是第一个字典(data_list[0]
)。如果您的实际列表长于此值,请分享更多数据。
somefile.csv
的内容:
row t0 elems Tspan NP wave0
0 8.69E-005 4 5E-006 625 123.65
96 333.56
187 3333.78
567.89
345678.77
34E-08
我希望这会有所帮助。