pandas读取csv报UnicodeDecodeError: 'utf-8'解码错误解决方法
问题说明
读取CSV文件中表头为Peptide Sequence的单列数据时,触发如下编码错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 162: invalid start byte
问题复现代码:
import pandas as pd file = r'C:\...\thpdb.csv' df = pd.read_csv(file, usecols=['Peptide Sequence']) print(df)
快速解决方法
报错核心原因是pandas.read_csv()默认使用utf-8编码解码文件,但目标CSV文件实际不是utf-8编码,0x81不属于utf-8的合法起始字节,按优先级尝试以下方案即可快速修复:
- 方案1:指定国内Windows环境生成CSV最常用的
gbk编码读取,修改读取行代码为:df = pd.read_csv(file, usecols=['Peptide Sequence'], encoding='gbk') - 方案2:如果gbk编码仍报错,尝试Windows西欧语言默认编码
cp1252,0x81是该编码下的合法字符:df = pd.read_csv(file, usecols=['Peptide Sequence'], encoding='cp1252') - 方案3:上述编码都不生效时,使用gbk超集
gb18030,兼容绝大多数中文场景下的生僻字符、特殊符号:df = pd.read_csv(file, usecols=['Peptide Sequence'], encoding='gb18030') - 兜底方案:如果不需要严格还原文件里的所有特殊字符,仅需提取目标列数据,可以加参数直接跳过解码异常的字节,不需要手动匹配编码:
df = pd.read_csv(file, usecols=['Peptide Sequence'], encoding='utf-8', encoding_errors='ignore')
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

