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

使用pandas读取TSV文件category列出现UnicodeDecodeError如何解决

报错产生原因

这个报错本质是TSV文件的实际编码和pandas默认使用的UTF-8编码不匹配,文件中存在UTF-8无法解析的字节(报错信息中提到的0x89就是不符合UTF-8编码规范的字节)。你看起来文件没有特殊字符,是因为文本编辑器打开文件时自动做了编码兼容处理,只显示了可打印的内容,隐藏了不可见的特殊字节或者编码差异。这类问题常见于从Windows系统导出、或者用GBK/GB2312/Windows-1252/latin-1等非UTF-8编码保存的文件。

修复方法

不需要先通过open打开文件,直接将文件路径传入pd.read_csv,同时指定正确的encoding参数即可,按优先级可以依次尝试以下几种编码:

  1. 优先尝试latin-1,该编码可以兼容所有单字节内容,不会触发解码报错,适合先读取文件验证内容:
import pandas as pd
df = pd.read_csv(filename, sep='\t', encoding='latin-1')
  1. 如果文件包含中文内容,尝试中文编码:
# 尝试GBK编码
df = pd.read_csv(filename, sep='\t', encoding='gbk')
# 兼容性更好的GB18030编码
df = pd.read_csv(filename, sep='\t', encoding='gb18030')
  1. 如果文件是带BOM的UTF-8编码,使用以下参数:
df = pd.read_csv(filename, sep='\t', encoding='utf_8_sig')
原有代码的其他问题

你编写的循环逻辑存在错误:你定义了空列表categoryList,但循环中是往categoryColumn(pandas的Series对象)追加元素,不符合你的预期。如果要将category列转为列表,直接调用内置的tolist()方法即可,不需要手动写循环:

categoryList = df["category"].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:00