我正在尝试从多个不同的列表中创建CSV文件
列表中的数据都是整数或浮点
我可以将字段名称正确放入我的csv文件中,但是当我尝试将列表中的数据添加到csv文件中的新行时,我得到TypeError:' int'对象不可订阅,错误消息
我的代码如下
import csv
fileName= str(input("input a file name > "))
with open(fileName+'.csv', 'w') as csvfile:
fieldnames = ['Generation', 'Juviniles', 'Adults', 'Seniles', 'Total']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
i=0
for n in range (gens):
writer.writerow({'Generation': str(i), 'Juviniles': str(juviniles[i]), 'Adults': str(adults[i]), 'Seniles': str(seniles[i]), 'Total': str(total[i]))
i = i+1
writer.writerow({'Generation': str(i), 'Juviniles': str(juviniles[i]), 'Adults': str(adults[i]), 'Seniles': str(seniles[i]), 'Total': str(total[i])})
当我只输入前两列(生成和juviniles)时它工作正常,但当我试图扩展到5列时,它会抛出错误。
我首先想到的是我必须将列表中的数据更改为字符串(因此str(0函数)但没有区别
任何帮助都会受到极大的欢迎。
答案 0 :(得分:0)
您似乎正在尝试将单独的列表压缩在一起,每个列表代表CSV文件中的一列。这是一个简单的方法:
import csv
from itertools import count, izip
# Some other details here
with open(fileName+'.csv', 'w') as csvfile:
fieldnames = ['Generation', 'Juviniles', 'Adults', 'Seniles', 'Total']
writer = csv.writer(csvfile)
writer.writerow(fieldnames)
for row in izip(count(), juviniles, adults, seniles, total):
writer.writerow(row)
DictWriter
,只需使用常规writer
:我们不会处理词典count()
是一个生成0,1,2,3 ...... izip
(或zip
)组合了所有列以制作行