不带熊猫的Python解码excel工作表

不带熊猫的Python解码excel工作表,python,excel,utf-8,Python,Excel,Utf 8,我试图在不使用pandas或xlrd的情况下读取python中的excel文件,并且一直试图将结果从字节转换为utf-8,但没有成功 来自xls文件的数据 colA colB colC spc 1D0 20190705 spd 1D0 20190705 spe 1D0 20190705 ... (goes on for 500k lines) with open(file, 'rb') as f: data = f.readl

我试图在不使用
pandas
xlrd
的情况下读取python中的excel文件,并且一直试图将结果从
字节
转换为
utf-8
,但没有成功

来自xls文件的数据

colA    colB    colC
spc     1D0     20190705
spd     1D0     20190705
spe     1D0     20190705
... (goes on for 500k lines)
with open(file, 'rb') as f:
    data = f.readlines(1)  # Just to check the first line that is printed out
    print(data[0].decode('utf-8'))
代码

colA    colB    colC
spc     1D0     20190705
spd     1D0     20190705
spe     1D0     20190705
... (goes on for 500k lines)
with open(file, 'rb') as f:
    data = f.readlines(1)  # Just to check the first line that is printed out
    print(data[0].decode('utf-8'))
我收到的错误是UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xd0:无效的连续字节

如果我打印
数据
而不进行解码,结果是:
[b b方\0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \ \ \ \ \ \x0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F\x00\x00\x00\x00\xfeM\x00\x00\x01\x00\x00\x00\xffM\x00\x00\x00\x00N\x00\x00\x01N\x00\x00\x02N\x00\x00\x03N\x00\x00\x04N\x00\x00\x05N\x00\x00\x06N\x00\x00\x07N\x00\x00\x08N\x00\x00\x00\tN\x00\x00\n']

我没有任何理由不想使用
pandas
xlrd
,我只是尝试在需要时使用标准库解析数据


有什么想法吗?

您需要先解压缩xlsx文件,然后才能读取其内容(假设您使用的是这种格式).

错误表明Excel文件中有一个特定字符无法用“utf-8”解码。请尝试使用其他编码器,但仍然不知道文档中可能隐藏着什么类型的字符。也许,您应该尝试一下:
pd.read\u Excel(文件)
看看你得到了什么。Excel是一种二进制格式,而不是纯文本。如果你不想使用
xlrd
pd.read\u Excel
,你就必须重新实现那些库的功能。即使你想解析.xlsx文件,这比.xls要简单得多,你仍然有很多工作要做。我猜你是作为一个整体来做的学习练习?如果是的话,那么我认为你应该看看哪里可以阅读.xlsx规范。如果你真的想学习.xls文件,我敦促你重新考虑。你可以学习很多其他更有用、更少痛苦的东西。理想情况下,你应该展示一些代码如何做到这一点s(例如,使用std lib
zipfile
模块),然后在解包xlsx存档后如何继续(处理哪个文件,如何访问单元格数据等)在进入这样的企业之前,等待确认xlsx确实是OP试图读取的格式可能是明智的……另请参见,介绍一种仅使用标准库功能读取`*.xlsx*Excel文件的解决方案。