[英]Python write to csv in rows
可能是基本的 Python,但我無法理解它。
我從打印為[{1,2,3},{4,5,6),{7,8,9}]
的函數中得到了一些結果。 我想將其寫入這樣的 csv:
A B C
1 2 3
4 5 6
7 8 9
使用此代碼(注意writerow.
):
filename = 'test.csv'
sr = []
for row in result:
sr.append(row)
with open(filename, "wb") as f:
writer = csv.writer(f, delimiter=';')
writer.writerow(sr)
我得到:
A B C
{1,2,3} {4,5,6} {7,8,9}
當我使用writer.writerows(sr)
我得到_csv.Error: sequence expected
。 這是完全有道理的,因為我的初始結果只是一行。
如何以一種可以將數據轉換為我想要的 csv 的方式轉換數據?
如果您的結果如下所示:
result = [{1, 2, 3}, {4, 5, 6}, {8, 9, 7}]
您可以直接使用writerows
編寫它:
import csv
with open('test.csv', 'w') as f:
w = csv.writer(f, delimiter=';')
w.writerows(result)
writerows
需要一個iterable
的iterable
,在您的情況下是一個set
,但如果您使用writerow
它將把您的result
寫在一行中,每列給出一個set
要以您想要的方式獲得格式,需要遵循以下幾點:
import csv
result = [{1, 2, 3}, {4, 5, 6}, {8, 9, 7}]
filename = 'testabc.csv'
header = 'A', 'B', 'C'
with open(filename, "wb") as f:
writer = csv.writer(f, delimiter=';')
writer.writerows(header)
for row in result:
writer.writerow(list(row))
一個潛在的問題是set
不保留順序,因此項目可能以每行的隨機順序結束(除非您手動對它們進行排序)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.