高版本pandas(≥1.2.5)如何读取Shift-JIS(CP932)编码的Excel文件
问题原因
- pandas ≥1.2.5 版本的
read_excel方法已经移除了顶层encoding参数,编码相关配置需要传递给底层解析引擎 - 你采用
rb二进制模式打开文件时,本身就不支持指定encoding参数,该参数仅对文本模式打开的文件生效 - Shift-JIS(CP932)编码的Excel文件直接按默认配置读取,会出现解析失败或内容乱码问题
正确读取方案
场景1:读取的是.xls格式(Excel 2003及更早版本)文件
使用xlrd作为解析引擎,将编码参数通过engine_kwargs传递给引擎即可,依赖安装命令:pip install xlrd==1.2.0(高版本xlrd不再支持.xls以外的格式)
代码示例:
import pandas as pd df = pd.read_excel( "你的文件路径.xls", engine="xlrd", engine_kwargs={"encoding": "cp932"} )
场景2:读取的是.xlsx格式文件
使用openpyxl作为解析引擎,依赖安装命令:pip install openpyxl
默认读取后如果存在内容乱码,可对字符串列手动做编码转义即可,代码示例:
import pandas as pd # 基础读取 df = pd.read_excel("你的文件路径.xlsx", engine="openpyxl") # 对乱码的字符串列做转码 df["目标列名"] = df["目标列名"].str.encode("latin1").str.decode("cp932")
内容的提问来源于stack exchange,提问作者user2058374
相关产品推荐
相关产品推荐

