我在运行我的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'
有什么想法吗?
由于
答案 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'
}
},