使用Python Pandas将文本文件转CSV时遇到utf-8解码错误如何解决
报错原因
'utf-8' codec can't decode byte 0xe9 是典型的编码不匹配错误:pd.read_csv()默认使用UTF-8编码读取文件,但你传入的Output Configured 3.txt实际存储编码不是UTF-8,0xe9字节不符合UTF-8的编码规则,导致读取流程直接中断,没有数据被加载到DataFrame中,最终导出的文件为空。
修复方案
核心修改是在读取文件时传入和文件实际编码匹配的encoding参数,按优先级尝试以下方案即可:
- 若文件是国内Windows环境生成的中文文本,优先指定GBK编码,同时导出时建议用utf-8-sig编码避免Excel打开乱码,修改后完整代码:
import pandas as pd account = pd.read_csv("Output Configured 3.txt", delimiter = '/', encoding='gbk') account.to_csv('Output Configured 3.csv', index = None, encoding='utf-8-sig')
- 若GBK编码仍报解码错误,尝试替换encoding参数值为
cp1252,适配带西欧特殊字符的文本文件 - 若无法确认文件编码,直接将encoding参数设为
latin-1,该编码支持0-255全部单字节值,不会触发解码报错,可保证文件正常读取导出,仅可能在编码完全不匹配时出现个别特殊字符显示异常。
可选优化
如果需要精准匹配文件编码,可安装chardet库自动检测文件编码,检测代码如下:
import chardet # 以二进制模式读取文件内容检测编码 with open("Output Configured 3.txt", "rb") as f: file_encoding = chardet.detect(f.read())["encoding"] # 用检测到的编码读取文件即可 account = pd.read_csv("Output Configured 3.txt", delimiter = '/', encoding=file_encoding)
内容的提问来源于stack exchange,提问作者IUseThisToAskForHelp
相关产品推荐
相关产品推荐

