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

航班票价预测项目Data Transformation Pipeline遇UnicodeDecodeError求助

解决pd.read_csv的UnicodeDecodeError问题

问题分析

回溯指向pd.read_csv(self.config.data_path)读取失败,错误字节0xa1通常不属于标准UTF-8编码,可能是文件实际编码与声明的UTF-8不符,或是Pipeline运行时读取的文件路径/内容和单独测试时存在差异。

解决方案

1. 指定兼容编码读取

尝试用常见编码格式读取文件,覆盖默认的UTF-8:

# 优先尝试Windows-1252(0xa1是该编码的常见字符)
df = pd.read_csv(self.config.data_path, encoding='Windows-1252')
# 若无效,再试GBK编码
# df = pd.read_csv(self.config.data_path, encoding='GBK')
# 极端情况用latin-1(兼容所有字节,避免报错但可能显示乱码,需后续处理)
# df = pd.read_csv(self.config.data_path, encoding='latin-1')

2. 验证Pipeline中的文件路径

检查Pipeline运行时的文件路径是否与单独测试一致,避免因相对路径基准不同读取了错误文件:

# 在读取前打印路径确认
print("当前读取路径:", self.config.data_path)
df = pd.read_csv(self.config.data_path)

3. 重新保存文件为标准UTF-8

用文本编辑器(VS Code、Notepad++等)打开目标CSV文件,选择「另存为」,编码选择UTF-8(带/不带BOM都可尝试),覆盖原文件后重新运行Pipeline。

4. 临时跳过错误行(应急方案)

若仅个别行存在编码问题,可跳过错误行继续执行:

df = pd.read_csv(self.config.data_path, on_bad_lines='skip')

额外排查点

  • 确认Pipeline运行的虚拟环境与单独测试环境的pandas版本一致,不同版本对编码的处理逻辑可能有差异。
  • 检查文件是否被其他程序锁定或修改,导致读取内容与测试时不一致。

内容的提问来源于stack exchange,提问作者Md. Ehsanul Haque Kanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:09:56