Python 将列表内容写入单个csv列
我正在尝试将列表的内容写入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)
#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)]