Pandas 处理读取 excel 数据的时候中文字符显示问号乱码?

2017-11-21 13:42:23 +08:00
 krisbai
如题,测试了多种方法都不可行。coding=utf8 ,encoding='18030' 都验证过。求思路,谢谢!
8699 次点击
所在节点    Python
8 条回复
wampyl
2017-11-21 14:01:09 +08:00
关注,我上次服务器转码死活不行,最后直接用 iconv 命令了。
wang9571
2017-11-21 14:43:19 +08:00
没有报错信息,我不知道你遇到的情况跟我的是不是一样。我说一下我碰到的情况。

Pandas 的 read_excel 是基于 xlrd 的,但是这个方法会接收多余的参数,直接 coding=utf8 是传不到 xlrd 那里的。
你可以先用 book = xlrd.open_workbook(文件, encoding_override='gb18030'),
再使用 pandas.read_excel(book, engine='xlrd')
wx8600
2017-11-22 01:24:33 +08:00
你们能不能不要用 Py2 了…这都 2017 年了…
billgreen1
2017-11-22 10:32:04 +08:00
@wx8600 赞同
data2world
2017-11-22 16:12:16 +08:00
哥们儿,1,你的平台是什么? linux 还是 win。2。你这是 csv 不是 excel。3。一般来讲 sys.setdefaultencoding("utf-8") 几乎不能解决乱码问题。4. 你可以测试新建一个包含中文的 csv 文件,看是否乱码。5.以前我遇到过读文件只有一个字是乱码的。。。但是在 office 显示是正常的。。。
ulster02
2017-11-24 08:57:46 +08:00
encoding= 'gb18030'
krisbai
2017-11-24 12:26:11 +08:00
@wang9571 这个办法不错。
krisbai
2017-11-24 12:26:26 +08:00
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')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/408237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX