执行Python代码时的KeyError

时间:2015-06-11 09:23:35

标签: python file csv

我在运行我的python脚本时遇到keyError,它从一个csv导入数据,修改它并写入另一个csv。

代码段:

import csv

Ty = 'testy'
Tx = 'testx'



ifile = csv.DictReader(open('test.csv'))
cdata = [x for x in ifile]

for row in cdata:
    row['Test'] = row.pop(Ty)

执行时出现错误:

 row['Test'] = row.pop(Ty)
KeyError: 'testy'

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

根据错误消息,"ControllerAndAction"的第一行缺少testy

test.csv

中尝试此类内容
test.csv

请注意,col_name1,col_name2,testy a,b,c c,d,e 周围不应有任何空格/标签。

答案 1 :(得分:1)

由于您没有定义密钥名称,因此您的csv可能没有标题,其中已完成密钥的规范。 fieldnames需要参数ifile = csv.DictReader(open('test.csv'), fieldnames=['testx', 'testy']) ,因此它可以将其作为键(标题)映射到值。

所以你应该做些类似的事情来阅读你的csv文件:

fieldnames

如果您不想传递Year,Make,Model 1997,Ford,E350 2000,Mercury,Cougar 参数,请尝试了解csv定义其标头的位置,请参阅wikipedia article

  

第一条记录可能是"标题",其中包含列名   每个字段(没有可靠的方法来判断文件是否存在   这样做与否;但是,使用除了以外的字符是不常见的   这些列名称中的字母,数字和下划线。)

'testy'

您可以将'testx'fieldnames放入csv,不要将DictReader传递给concat: { dist: { src: [ 'startpage/file1.js', 'startpage/file2.js' ], dest: 'startpage.js' } },