繁体   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