Python用csv.reader读取csv文件出现UnicodeDecodeError错误怎么解决?
Python读取CSV报UnicodeDecodeError错误解决方案
错误原因
该错误触发原因是待读取的CSV文件实际编码与Python open函数默认使用的utf-8编码不匹配,Windows系统下导出的CSV文件多为GBK、GB2312、cp1252等非UTF-8编码,极易触发该问题。
解决方案
- 方案1:指定正确的文件编码(推荐)
优先尝试常用编码,可直接在open函数中添加encoding参数指定编码,示例代码如下:
import csv # 可根据文件实际编码替换encoding参数值,常见可选值:gbk、gb2312、cp1252、latin-1 with open("file.csv", "r", encoding="gbk") as f: csv_reader = csv.reader(f) for i in csv_reader: print(i)
若不知道文件实际编码,可通过chardet库自动检测,使用方法如下:
- 安装chardet库:
pip install chardet - 执行编码检测代码:
import chardet # 二进制模式读取文件内容检测编码 with open("file.csv", "rb") as f: detect_result = chardet.detect(f.read()) print("检测到的文件编码为:", detect_result["encoding"])
拿到检测结果后,将对应编码填入open函数的encoding参数即可。
- 方案2:忽略解码错误(应急使用,可能丢失部分特殊字符)
若暂时无法确认编码,可添加errors="ignore"参数忽略解码过程中的错误,示例代码如下:
import csv with open("file.csv", "r", encoding="utf-8", errors="ignore") as f: csv_reader = csv.reader(f) for i in csv_reader: print(i)
内容的提问来源于stack exchange,提问作者Hùng Nguyễn
相关产品推荐
相关产品推荐

