我正在改進一些開放源代碼的心理測試。 對於數據輸出,我使用了python的CSV模塊,它本身工作正常。數據輸出取決於Django模型(試驗)和相應的數據庫條目,我想將其他模型(參與者)的數據添加到CSV中。到目前爲止,我只設法在新行中添加所需的條目,但這基本上使CSV不能用於統計程序中的進一步使用。 總之我得到什麼:用python編寫csv中的幾行字段
headers of database entry 1
headers of database entry 2
values of database entry 1
values of database entry 2
但我要的是輸出看起來像這樣:
headers of database entry 1 followed by 2
values of database entry 1 followed by 2
這是出口的重要組成部分的樣子。
def export_as_csv(modeladmin, request, queryset):
headers, fields = zip(*export_info_trial)
headers_participant, fields_participant = zip(*export_info_participant)
zipFile = ZipFile(in_memory, 'w')
for participant in queryset:
rows = [headers_participant] + [headers]
participants = Participant.objects.filter(id=participant.id)
trials = Trial.objects.filter(participant=participant.id)
for participant_value_list in participants.values_list(*fields_participant):
rows.append([unicode(v) for v in participant_value_list])
for trial_value_list in trials.values_list(*fields):
rows.append([unicode(v) for v in trial_value_list])
我不明白,因爲它現在是由我打電話rows.append兩次,但現在我沒有任何想法如何這兩個調用巧妙地(或全部)相結合而引起的輸出。
編輯: 作家被稱爲如下:
f = StringIO()
writer = UnicodeWriter(f)
for row in rows:
writer.writerow(row)
我還增加了功能的前述部分的上方。
我感謝大家的幫助!
一個建議,看看DictWriter。當你想爲單行生成一條記錄並將其寫入csv文件時,它非常棒。 –
我認爲你需要合併這些列表。將列表添加到結果列表中,然後迭代它。更新了我的答案。 –