python xlutils ascii_pandas读取excel问题解答 python3-No CODEPAGE record, no encoding_override: will use 'a...

*** No CODEPAGE record, no encoding_override: will use 'ascii' 报错信息

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb6 in position 0: ordinal not in range(128)

前几天在用 python3 pandas读取旧的excel(2003版本)时, 遇到了这样的报错。

在stackoverflow  和百度都搜了搜。感觉还是找不到原因所在

参考了这个 改编码的方式, workbook=xlrd.open_workbook('harvest.xls',encoding_override='cp1252')

encoding_override='cp1252'试了 , "ISO-8859-1"这编码也试了,都不能成功。

然而,这些excel  在电脑上用微软excel手工打开保存后,接着跑程序处理就没问题了。

于是想到折中的办法,用python 的os模块唤起微软程序  保存一遍试试,

但是太麻烦了(感兴趣的朋友可自行尝试)感觉。

最后冥思苦想出了: (ii 是excel文件名)

from  xlutils.copy   import  copy

file1= xlrd.open_workbook(chuli_dir +'\\'+ii ,encoding_override=sys.getfilesystemencoding() )

file = copy(file1)

chulihou ='D:\处理表格\hc'+'\\'+ii

file.save('D:\处理表格\hc'+'\\'+ii)

新建个hc文件夹, 旧excel是 file1  ,用from xlutils.copy import  copy  ,先用sys模块的获取当前文件编码 。 来打开旧excel,然后  复制一份到 hc 目录下,再从hc 目录开始工作:

data_excel= pd.read_excel(chulihou ,dtype=str)

得到pandas 的dataframe 格式的data_excel  成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值