数据科学我爱编程

pandas读取excel问题解答 python3-No COD

2017-10-23  本文已影响34人  寒月谷

*** 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  成功了!

上一篇下一篇

猜你喜欢

热点阅读