如何读取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
相关产品推荐
相关产品推荐

