You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取CSV按ID提取行报KeyError: 'id'错误如何解决?

错误原因及解决方案

核心错误原因

    1. CSV表头隐藏字符/格式问题

最常见的是CSV文件使用UTF-8带BOM格式存储,导致第一列id的键名前自动添加了零宽空格\ufeff,实际读取到的键为\ufeffid而非id,直接取line['id']就会触发KeyError。
其次是你提供的CSV样例表头逗号后带空格,如果id列前/后存在多余空格,读取到的键会变成' id '之类的带空格值,和传入的key_id="id"不匹配。

    1. 补充问题:你样例中的第二列表头拼写为Numder,和你调用函数时传入的fieldnames=["Number", "Date"]拼写不一致,会导致后续写入文件时丢失该列数据,也建议修正。

修复方案

  1. 先确认实际读取到的表头,在csv_reader = DictReader(in_file)后加一行代码打印表头:
print(csv_reader.fieldnames)

运行后就能看到实际的键名,如果确实有BOM头或者空格,对应修改key_id参数即可,比如BOM头的情况传key_id="\ufeffid"。
2. 统一处理表头空格,初始化DictReader时就去掉所有键名的前后空格,修改读取部分代码:

csv_reader = DictReader(in_file)
# 统一去掉所有表头的前后空格
csv_reader.fieldnames = [field.strip() for field in csv_reader.fieldnames]
  1. 如果是BOM头导致的问题,打开文件时指定编码为utf-8-sig自动剔除BOM头,修改open语句:
with open(file=master_csv, encoding='utf-8-sig') as in_file
  1. 修正表头拼写错误,把CSV里的Numder改成Number,和你传入的fieldnames对应。

内容的提问来源于stack exchange,提问作者kansi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:06:03