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

如何读取CSV文件指定列转为值列表并解决KeyError报错

问题解决

错误原因

  • 第一处语法问题:open(dm.txt)中文件名是字符串常量,需要包裹引号,修正为open("dm.txt", encoding="utf-8"),否则会触发未定义变量报错
  • KeyError的核心原因:你提取的第三列键值,在demo.ini的[DEMFILE]配置段中不存在对应的键,或是键前后有多余空白字符导致匹配失败

正确实现代码

from configparser import ConfigParser

config = ConfigParser()
# 明确指定编码读取配置文件
config.read("demo.ini", encoding="utf-8")
# 提前校验配置段是否存在
if "DEMFILE" not in config:
    raise ValueError("demo.ini中不存在[DEMFILE]配置段")

keys = []
# 用with上下文管理器安全读取文件,自动释放资源
with open("dm.txt", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        # 跳过空行避免拆分错误
        if not line:
            continue
        parts = line.split("|")
        # 校验列数是否符合要求,避免索引越界
        if len(parts) >= 3:
            # 去除第三列前后空白,避免匹配异常
            col3 = parts[2].strip()
            keys.append(col3)

# 取值时增加存在性判断,避免KeyError
vals = []
for k in keys:
    if k in config["DEMFILE"]:
        vals.append(config["DEMFILE"][k])
    else:
        # 不存在的键可填入默认值,也可自定义抛出明确错误
        vals.append(None)

print(vals)

请确认你的demo.ini配置文件格式如下,键名和你提取的第三列完全一致:

[DEMFILE]
Name = 你要设置的Name对应值
City = 你要设置的City对应值
Code = 你要设置的Code对应值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:12:00