从许多不同的列表创建一个csv文件

时间:2015-05-26 22:52:10

标签: python csv

我正在尝试从多个不同的列表中创建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函数)但没有区别

任何帮助都会受到极大的欢迎。

1 个答案:

答案 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)组合了所有列以制作行
相关问题