如何将下面的zip列表写入python中的csv文件?
[{'date': '2015/01/01 00:00', 'v': 96.5},
{'date': '2015/01/01 00:01', 'v': 97.0},
{'date': '2015/01/01 00:02', 'v': 93.75},
{'date': '2015/01/01 00:03', 'v': 96.0},
{'date': '2015/01/01 00:04', 'v': 94.5}
我有这个错误:
_csv.Error: sequence expected
我的代码在这里:
import csv
res = zip_list
csvfile = "/home/stm/PycharmProjects/isbak_trafik/example.csv"
with open(csvfile, "w") as output:
writer = csv.writer(output, lineterminator='\n')
writer.writerows(res)
答案 0 :(得分:2)
由于我发现csv.DictWriter的功能不透明,我建议您执行以下操作:
with open(csvfile, "w") as output:
output.write(';'.join(list(res[0].keys()))+"\n")
[output.write(';'.join(list(map(str, r.values())))+"\n") for r in res]
答案 1 :(得分:1)
writer.writerows需要一系列值来将单行写入CSV文件。
使用原始代码:
import csv
res =[{'date': '2015/01/01 00:00', 'v': 96.5}, {'date': '2015/01/01 00:01', 'v': 97.0}, {'date': '2015/01/01 00:02', 'v': 93.75}, {'date': '2015/01/01 00:03', 'v': 96.0}, {'date': '2015/01/01 00:04', 'v': 94.5}]
csvfile = "example.csv"
with open(csvfile, "w") as output:
writer = csv.writer(output, lineterminator='\n')
for line in res:
date = line['date']
value = line['v']
writer.writerow([date, value])
答案 2 :(得分:1)
您可以切换到使用Python的DictWriter
。您可以传递列标题列表,这可确保输出中列的顺序符合您的要求。只有此列表中的列才会写入输出文件:
import csv
zip_list = [
{'date': '2015/01/01 00:00', 'v': 96.5},
{'date': '2015/01/01 00:01', 'v': 97.0},
{'date': '2015/01/01 00:02', 'v': 93.75},
{'date': '2015/01/01 00:03', 'v': 96.0},
{'date': '2015/01/01 00:04', 'v': 94.5}]
csvfile = "/home/stm/PycharmProjects/isbak_trafik/example.csv"
with open(csvfile, "wb") as output:
writer = csv.DictWriter(output, fieldnames=['date', 'v'])
writer.writeheader()
writer.writerows(zip_list)
这将产生以下输出:
date,v
2015/01/01 00:00,96.5
2015/01/01 00:01,97.0
2015/01/01 00:02,93.75
2015/01/01 00:03,96.0
2015/01/01 00:04,94.5