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



尝试读取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>

P.S。任务是处理52个文件,将每个表格中的数据与52个文件中的相应表合并。因此,请不要处理工作建议。

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

XLSX文件是二进制文件(实际上它们是XML,但已被压缩(,因此您需要以二进制模式打开它们。使用此电话打开:

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

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

问题在于,原始请求者将用filehandle调用read_excel作为第一个参数。正如最后一个响应者所证明的那样,第一个论点应该是包含文件名的字符串。

我遇到了相同的错误:

df = pd.read_excel(open("file.xlsx",'r'))

但是正确的是:

df = pd.read_excel("file.xlsx")

很可能问题是在俄罗斯符号中。

Charmap是使用默认解码方法,以防未注意编码。

我看到UTF-8和Latin-1是否没有帮助,请尝试读取此文件

pd.read_excel(f)

但是

pd.read_table(f)

甚至只是

f.readline()

为了检查什么是符号提出执行并删除此符号/符号。

熊猫支持编码功能以阅读您的Excel在您的情况下,您可以使用:

df=pd.read_excel('your_file.xlsx',encoding='utf-8')

,或者如果您想在更具体的系统中而没有任何偏心的情况下,则可以使用:

df=pd.read_excel('your_file.xlsx',encoding='sys.getfilesystemencoding()')

有时候,如果我们在excel表中有空单元格,那是熊猫数据框架的零值,而为此,我们可以拥有对我有用的以下方法。

import pandas as pd
import openpyxl
# Load Excel file using openpyxl
wb = openpyxl.load_workbook('excel_sheet_name.xlsx')
sheet = wb.active
# Create an empty DataFrame
data = []
# Iterate over the rows in the sheet
for row in sheet.iter_rows(values_only=True):
    data.append(row)
# Convert to DataFrame
excel_file = pd.DataFrame(data)

相关内容

  • 没有找到相关文章

最新更新