如何在.csv文件中以列而不是行保存列表?

问题描述 投票:0回答:1

我想在.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)
python csv rows
1个回答
1
投票

的方式 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]]


0
投票

你有没有试过把writows这一行替换成。

writer.writerows(np.array([x]).T)

应该可以 (你应该 import numpy as np(当然)


0
投票

你需要通过 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')
© www.soinside.com 2019 - 2024. All rights reserved.