簡體   English   中英

Python按行寫入csv

[英]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需要一個iterableiterable ,在您的情況下是一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM