我在运行我的 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'
知道吗?
谢谢
可能您的 csv 没有标头,因为您没有定义密钥名称,因此完成了密钥的规范。DictReader
需要参数fieldnames
,以便它可以相应地将其作为键(标头)映射到值。
所以你应该做一些类似读取csv文件的事情:
ifile = csv.DictReader(open('test.csv'), fieldnames=['testx', 'testy'])
如果您不想传递 fieldnames
参数,请尝试了解 csv 定义其标头的位置,请参阅维基百科文章:
第一条记录可能是"标题",其中包含列名 每个字段(没有可靠的方法来判断文件是否 这样做或不这样做;但是,使用除 此类列名称中的字母、数字和下划线)。
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar
您可以将'testy'
和'testx'
放入csv中,不要将fieldnames
传递给DictReader
根据错误消息,test.csv
的第一行缺少testy
在test.csv
中尝试此类内容
col_name1,col_name2,testy
a,b,c
c,d,e
请注意,testy
周围不应有任何空格/制表符。