我想在.csv文件中保存一个列表。我有语法,但它保存在行而不是列。请给建议。Thanks in advance.My syntax is:
import csv
n=0
x=[]
while n < 10:
n = n+1
x.append(n)
with open('test.csv','w') as file:
writer = csv.writer(file)
writer.writerows([x])
print(x)
的方式 writerows
函数的特点是,它接受一个迭代项(在本例中是一个列表),并将迭代项上的每个项目打印在自己的行上,用定界符(默认情况下是一个 ,
)
这里发生的事情是,你正在通过 [[1,2,3,4,5,6,7,8,9,10]]
这意味着有一个单行([1,2,3,4,5,6,7,8,9,10]
)来写出。
如果你想把每个项目写到它自己的行中,你需要把每个项目提供为它自己的列表。
import csv
n = 0
x = []
while n < 10:
n = n+1
x.append([n])
print(x)
with open('test.csv', 'w') as file:
writer = csv.writer(file)
writer.writerows(x)
在这里,我已经删除了 []
左右 x
并将其移至最后一行 x.append([n])
营造 x
也就是 [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]
你有没有试过把writows这一行替换成。
writer.writerows(np.array([x]).T)
应该可以 (你应该 import numpy as np
(当然)
你需要通过 csv.writerows()
方法中的 "行对象的迭代",它可以是一个 生成语. 另外,请注意你应该用以下方法打开csv文件 newline=''
在Python 3.x中,如 模块文件.
下面是怎么做的。请注意,列表中的每个值是如何(暂时)通过 [v]
表达的一部分。
import csv
x = list(range(10))
with open('testfile.csv', 'w', newline='') as file:
csv.writer(file).writerows(([v] for v in x))
print('done')