Pandas 读取 _excel:'utf-8' 编解码器无法解码位置 14 中的字节 0xa8:无效的起始字节

新手上路,请多包涵

尝试读取 2016 版 MS Excel 文件。文件包含多个数据列表。从数据库下载的文件,可以在 MS Office 中正确打开。在下面的示例中,我更改了文件名。

编辑: 文件包含俄语和英语单词。很可能使用了 Latin-1 编码,但 encoding='latin-1' 没有帮助

import pandas as pd
with open('1.xlsx', 'r', encoding='utf8') as f:
        data = pd.read_excel(f)

结果:

 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 14: invalid start byte

没有 encoding ='utf8'

 'charmap' codec can't decode byte 0x9d in position 622: character maps to <undefined>

PS Task是处理52个文件,将每个sheet中的数据与52个文件中对应的sheet合并。所以,请不要处理工作建议。

原文由 pure_true 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

问题很可能出在俄语符号中。

Charmap 是在没有注意到编码的情况下使用的默认解码方法。

如我所见,utf-8 和 latin-1 是否无济于事,然后尝试读取此文件而不是

pd.read_excel(f)

pd.read_table(f)

甚至只是

f.readline()

为了检查什么是符号引发异常并删除此符号/符号。

原文由 plnnvkv 发布,翻译遵循 CC BY-SA 3.0 许可协议

您很可能正在使用 Python3。在 Python2 中,这不会发生。

xlsx 文件是二进制文件(实际上它们是一个 xml,但它是压缩的),因此您需要以二进制模式打开它们。使用此调用打开:

 open('1.xlsx', 'rb')

没有完整的回溯,但我想 UnicodeDecodeError 来自文件对象,而不是来自 read_excel()。发生这种情况是因为字节流可以包含任何内容,但我们不希望解码发生得太快; read_excel() 必须接收原始字节并能够处理它们。

原文由 Alan Franzoni 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题