如何为pandas的read_csv选择编码?读取xlsx报UnicodeDecodeError怎么办
问题根因与解决方法
你遇到的UnicodeDecodeError报错本质是调用了错误的文件读取方法,和编码设置无关:
- xlsx是Excel专用的二进制压缩格式文件,本质是打包了XML配置和内容的ZIP压缩包,你贴出的原始内容开头的
PK就是ZIP文件的标准头标识,这类文件不能用纯文本读取工具解析。 pd.read_csv()是专门用来读取纯文本格式的CSV(逗号分隔值)文件的接口,完全不支持读取xlsx格式文件,因此无论怎么调整编码参数都无法解决问题。
解决步骤
- 首先安装xlsx格式读取依赖:
pip install openpyxl
- 替换原有读取代码,使用pandas专门的Excel读取接口:
import pandas as pd df = pd.read_excel(file, engine='openpyxl')
如果你的需求是提取xlsx内的原始文本而非结构化读取为表格,可直接通过openpyxl库操作工作表逐单元格读取内容,不要直接读取xlsx文件的二进制内容转码。
内容的提问来源于stack exchange,提问作者Francis
相关产品推荐
相关产品推荐

