问题
How I can write below zip list to csv file in python?
[{'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}
I have this error:
_csv.Error: sequence expected
My code is here:
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)
回答1:
writer.writerows expects a sequence of values for writing a single row into the CSV file.
Using your original code:
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:
Since I find csv.DictWriter not transparent in what its doing, I would recommend doing the following:
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]
回答3:
You can switch to using Python's DictWriter
for this. You can pass a list of column headers, this ensures that the order of the columns in the output is what you require. Only columns in this list are written to the your output file:
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)
This would produce the following output:
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
来源:https://stackoverflow.com/questions/35265133/saving-zip-list-to-csv-in-python