Python中Pandas读取Excel文件时中文字符显示问号乱码如何解决?

如题,测试了多种方法都不可行。coding=utf8 ,encoding=‘18030’ 都验证过。求思路,谢谢!
Python中Pandas读取Excel文件时中文字符显示问号乱码如何解决?

9 回复

关注,我上次服务器转码死活不行,最后直接用 iconv 命令了。


这个问题通常是因为编码不匹配。试试在read_excel里指定engine='openpyxl'和正确的编码,比如:

import pandas as pd

# 方法1:指定engine和编码
df = pd.read_excel('your_file.xlsx', engine='openpyxl')

# 如果仍有问题,检查文件实际编码
# 方法2:先以二进制读取,再用chardet检测编码
import chardet

with open('your_file.xlsx', 'rb') as f:
    result = chardet.detect(f.read(10000))
    print(f"检测到的编码: {result['encoding']}")

# 根据检测结果调整读取方式
# 对于xlsx文件,通常不需要指定编码,但可以尝试:
df = pd.read_excel('your_file.xlsx', engine='openpyxl')

如果还是乱码,可能是文件本身保存时用了特殊编码,建议用Excel另存为UTF-8格式再读取。

总结:先确认文件编码,再调整读取参数。

没有报错信息,我不知道你遇到的情况跟我的是不是一样。我说一下我碰到的情况。

Pandas 的 read_excel 是基于 xlrd 的,但是这个方法会接收多余的参数,直接 coding=utf8 是传不到 xlrd 那里的。
你可以先用 book = xlrd.open_workbook(文件, encoding_override=‘gb18030’),
再使用 pandas.read_excel(book, engine=‘xlrd’)

你们能不能不要用 Py2 了…这都 2017 年了…

哥们儿,1,你的平台是什么? linux 还是 win。2。你这是 csv 不是 excel。3。一般来讲 sys.setdefaultencoding(“utf-8”) 几乎不能解决乱码问题。4. 你可以测试新建一个包含中文的 csv 文件,看是否乱码。5.以前我遇到过读文件只有一个字是乱码的。。。但是在 office 显示是正常的。。。

encoding= ‘gb18030’

这个办法不错。

import numpy as np
import pandas as pd
import xlrd
import openpyxl

book = xlrd.open_workbook(‘op.xlsx’, encoding_override=‘gb18030’)
df = pd.DataFrame(pd.read_excel(book, engine=‘xlrd’))
df_inner = df.loc[df[‘标题’].isin([‘提取内容’])]
df_inner.to_excel(’/opt/op_test.xlsx’)

回到顶部