【发布时间】:2017-02-20 10:01:29
【问题描述】:
我需要将 8 个列表的内容导出为 csv 文件(Google Cal 导出)
# Class dates (there can be the same value for several iterations)
datefield = []
# All fields are linked to a date (same index)
starttimefield = []
endtimefield = []
subjectfield = []
typefield = []
teacherfield = []
groupfield = []
roomfield = []
我正在寻找的是每一行的这样的 csv 输出(对于日期字段中的每个日期):
subjectfield,datefield,starttimefield,datefield,endtimefield,FALSE,typefield,roomfield
到目前为止,我已经尝试过这个(如果使用'wb'模式,它不想写):
rows = subjectfield,datefield,starttimefield,datefield,endtimefield,FALSE,typefield,roomfield
zip(*rows)
with open('classes.csv', 'w') as csvfile:
writer = csv.DictWriter(
csvfile, fieldnames=['Subject', 'Start Date', 'Start Time', 'End Date', 'End Time', 'All Day Event', 'Description', 'Location', 'Private']
)
writer.writeheader()
for row in rows:
writer.writerow(row)
问题是我得到一个这样的 csv 文件(每个列表值一行):
subjectfield[0]
subjectfield[1]
subjectfield[...]
datefield[0]
datefield[1]
...
我知道 csv.DictWriter().writerow 只接受字典,我不知道如何按照我需要的方式将列表聚合到字典中; datefield 可能多次包含相同的值,因为同一天可能有多个类。
因此,我正在寻找的是这样的:
with open('classes.csv', 'w') as csvfile:
writer = csv.DictWriter(
csvfile, fieldnames=['Subject', 'Start Date', 'Start Time', 'End Date', 'End Time', 'All Day Event', 'Description', 'Location', 'Private']
)
writer.writeheader()
for i in range(len(datefield)):
writer.writerow(subjectfield[i], datefield[i], starttimefield[i], datefield[i], endtimefield[i], "FALSE", typefield[i], roomfield[i])
【问题讨论】:
-
查看pandas。它对数据分析、数据操作很有用,它支持excel csv txt输出。
-
把你的问题分解成更小的问题。如果你没有字典,为什么要使用
csv.Dictwriter()?或者,如果您出于某种原因确实想使用Dictwriter,只需专注于创建字典即可。将错误叠加在一起,让您的生活变得复杂。 -
问题是,我不知道如何在没有字典的情况下编写行,DictWriter.writerow 需要字典;我正在寻找一种将每个字段的值直接传递给 writerow 函数的方法顺便说一句,在我的程序中创建一个字典似乎很困难,因为我需要具有多个类的日期(键)的多个值
标签: python list python-3.x dictionary export-to-csv