Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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列_Python_List_Csv - Fatal编程技术网

Python 将列表内容写入单个csv列

Python 将列表内容写入单个csv列,python,list,csv,Python,List,Csv,我正在尝试将列表的内容写入csv文件中的单个列。虽然我在过去做过这件事,但我无法让这个脚本正常工作。相反,我填充了所有的列,而不是行 #getting values for p vlue of 1%-100% a = [numpy.arange(.01,1.01,.01)] for i in a: with open("GFOLD_Hisat2.csv", 'wb') as file3: filewriter = csv.writer(file3)

我正在尝试将列表的内容写入csv文件中的单个列。虽然我在过去做过这件事,但我无法让这个脚本正常工作。相反,我填充了所有的列,而不是行

#getting values for p vlue of 1%-100%        
a = [numpy.arange(.01,1.01,.01)]
for i in a:
    with open("GFOLD_Hisat2.csv", 'wb') as file3:
        filewriter = csv.writer(file3)
        filewriter.writerow(score(list1, list2, i))
其中score()是一个输出整数的函数


关于我应该修改什么有什么想法吗?

忽略
list1
list2
是什么的问题(如果
score()
返回一个整数,它们是不相关的),我想问题在于循环结构

而不是

for i in a:
    with open("GFOLD_Hisat2.csv", 'wb') as file3:
        filewriter = csv.writer(file3)
        filewriter.writerow(score(list1, list2, i))
你可能想要

with open("GFOLD_Hisat2.csv", 'wb') as file3:
    filewriter = csv.writer(file3)
    for i in a:
        filewriter.writerow((score(list1, list2, i),))
目前,您正在打开该文件,并为
i
的每个值创建一个新的writer。请注意,我已将
score
的结果转换为
tuple

In [8]: a = [1,2,3,4,5]
In [9]: with open('a.csv', 'wt') as f:
    wr = csv.writer(f)
    for i in a:
        wr.writerow((i,))
   ...:         
In [10]: !cat a.csv
1
2
3
4
5
我也不确定您为什么要用
'wb'

正如Rob所指出的,你可以使用理解-完全避免循环。我的回答主要是解释现有代码中的错误

此外,如果您的输出文件实际上只包含一列,那么几乎没有理由使用
csv.writer
。只需执行以下操作

a = [1,2,3,4,5]
b = [score(list1, list2, i) for i in a]
with open('a.csv','wt') as f:
    f.writelines('\n'.join(map(str,b))

您必须更改文件打开和循环的顺序:

a = [numpy.arange(.01,1.01,.01)]

with open("GFOLD_Hisat2.csv", 'wb') as file3:
    filewriter = csv.writer(file3)
    for i in a:
        filewriter.writerow(score(list1, list2, i))

那么列表1和列表2是什么?它们是真实的列表吗,因为它改变了一切?您是否也尝试过将“val”从括号中去掉,但不确定是否需要。您应该修改您的问题,以显示什么是
list1
list2
,您想要的输出是什么,以及您的实际输出是什么。我对代码进行了一些修改,以使其更简单。请发布一篇简短的,实际演示问题的完整程序(当前示例生成:
\u csv.Error:sequence expected
)。请阅读,了解这样一个计划是如何以及为什么如此重要。请稍候
a=[numpy.arange(.01,1.01,01)]
这会产生一个包含列表的列表(实际上是一个
ndarray
)。因此,
for i in a
只给你一次迭代。这仍然不起作用:
.writerow()
接受一个iterable,但是
score()
显然返回一个
int
。是的,仍然以列而不是行的形式输出列表的内容。请参阅我对
a=[numpy.arange(.01,1.01,.01)]