[英]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.