Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用csv_write逐列写入和保存值(数组)_Python_Python 3.x_Csv - Fatal编程技术网

Python 如何使用csv_write逐列写入和保存值(数组)

Python 如何使用csv_write逐列写入和保存值(数组),python,python-3.x,csv,Python,Python 3.x,Csv,以open('kp_insitu.csv','w',newline=''作为myfile: for i in range(5): Arden # it is array of 100 elements wr = csv.writer(myfile,delimiter=',') for word in Arden: wr.writerow([word]) 值(5个数组值)在csv文件中连续打印,而不是逐列打印 您

以open('kp_insitu.csv','w',newline=''作为myfile:

     for i in range(5):
        Arden # it is array of 100 elements
        wr = csv.writer(myfile,delimiter=',')
        for word in Arden:
            wr.writerow([word]) 

值(5个数组值)在csv文件中连续打印,而不是逐列打印

您没有显示太多的代码,因此我不得不进行一些猜测

看起来您正在分别创建CSV writer对象五次。这就是你想要的吗?我认为您正在重复覆盖您的文件,您应该在进入循环之前创建它

您还可以隐藏创建雅顿的所有细节。是否附加到正在增长的对象的末尾?如果您想要五个独立的行,您需要自己生成每一行。

新鲜答案

我不得不猜测你的“Arden”变量是什么样子。它可以是100个值的一维序列(列表或元组)

第一个问题是,您正在使用for循环(第4行)将Arden分解,然后将每个值作为自己的行写入,并将每个值包装到列表中(第5行)。那么,目前,您在CSV文件中获得了一列值,对吗

您的第二个问题不是必须解决的,但您可能应该解决。创建一个CSV Writer对象并使用它处理整个文件,而不是为每行数据创建一个CSV Writer对象(第3行)

工作代码,基于我对您尝试执行的操作的最佳猜测:

import csv
filename = "test.csv"
f = open(filename, "w")
wr = csv.writer(f, delimiter=",")
for i in range(5):
    data = list(range(10*i, 10*i+9)) # one row of mock data
    wr.writerow(data)
f.close()
文件
test.csv
如下所示:

0,1,2,3,4,5,6,7,8
10,11,12,13,14,15,16,17,18
20,21,22,23,24,25,26,27,28
30,31,32,33,34,35,36,37,38
40,41,42,43,44,45,46,47,48

正如我所提到的,Arden是100值数组,它是经过一些计算后生成的。从一个输入文件中,我将生成5个Arden数组,我需要逐列写入。因此,您将生成5个不同的数组,每个数组都是一维的,1 x 100?您是否按照我的建议尝试将代码的第三行移到顶部?Arden每次初始化都是空的吗?我每次都会得到一组不同的Arden值。当我在csv文件中写入时,它会连续保存所有5个数组值(第一个数组值最多占用100行,第二个数组值从第101行开始(我希望作为下一列))。我怀疑您可能正在阻止CSV写入程序发出换行符,因为您创建了五个不同的CSV写入对象,并且每个对象只能写入一行。您是否尝试按照我的建议将读取
wr=csv.writer(myfile,delimiter=',')
的行移动到第1行?不,John,它不起作用。还有其他方法吗(我正在寻找一种创建数据框列的方法)