UnicodeDecodeError can't decode byte by writing and reading (with panda) into a file 解决的UnicodeDecodeError无法解码字节

UnicodeDecodeError can't decode byte solved by writing and reading (with panda) into a file

我有一个类似 excel 的数据结构,由我无法解码的字节组成。

这是一个如下所示的列表:

my_object = [b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1..., ........, b'\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff']

(注意my_object的最后一行是实际的,这里写得很完整。)

如果我尝试独立解码行,我得到:

my_object[-1].decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

(请注意,我尝试了几种不同的编解码器,包括:'utf8'、'ascii'、'ISO-8859-2'、'gbk'、'latin_1'、...)

但是,如果我尝试先将 my_object 保存到文件,使用:

f = open('test.xls','wb')
[f.write(my_object[i]) for i in range(len(my_object))]
f.close()

然后使用 pandas 打开它,例如:

import pandas as pd
pd.read_excel('test.xls')

我得到了预期的结果:

     Time (s)  Acceleration x (m/s^2)  Acceleration y (m/s^2)  \
0    0.000000                0.863679                0.196953   
1    0.002500                0.892268                0.206483   
2    0.005001                0.844621                0.196953  
......

这是一个很好的解决方法,但是,我真的很想避免从磁盘写入和读取磁盘来执行这样的操作。

有人能帮忙吗?

提前致谢。

如果你只是想让pandas读入一个excel文件,而你已经在内存中有原始字节,你可以使用io包来转换一个字符串或字节放入内存中的可读文件中:

import io
file_bytes = b''.join(my_object)
pd.read_excel(io.BytesIO(file_bytes))