如何修复读取 Excel 文件的编码错误

How to fix an encoding error reading an Excel file

我正在尝试为自己制作一个脚本,将 excel 文件上传到 postgre 数据库。源文件必须是 xlsx(不能是 csv)。我的脚本可以处理大多数文件,但有一个......有一列文本(长句)。特别是对于这个文件,我收到了这个错误:

     26     """
     27 
---> 28     cursor.copy_expert(sql=sql_statement % tbl_name, file=my_file)
     29     print('file copied to db')
     30 

QueryCanceled: COPY from stdin failed: error in .read() call: UnicodeDecodeError 'charmap' codec can't decode byte 0x81 in position 6918: character maps to <undefined>
CONTEXT:  COPY clean_file, line 1

根据我的搜索,这个错误通常是由于编码引起的,因此我确实尝试了一堆编码类型,如 utf-8、latin1、cp850、cp1252 .. 但 none 有效。 而不是我一直试图找到正确的编码,我认为实际识别“麻烦”字符并在 excel 文件中替换它(替换)会更容易...... 我怎样才能找到这个角色? “……在 6918 号位置……”太含糊了。我有办法找到它吗? 我选择的上传库是 psycopg2(我必须 ul 到 postgre 数据库)。该脚本在没有相关列的情况下工作正常......所以很明显其中一个单元格内的某些东西导致了这个问题

我最近在尝试读取 .xlsx 文件时遇到了这个问题

我的解决方案:

pip install openpyxl

然后读取文件如下:

df = pd.read_excel(file_path, index_col=None, engine='openpyxl')

我很乐意提供帮助。

通过在 open 语句中添加 encoding='utf8' 以及 pd.read_excel 语句来修复错误 df[文件] = pd.read_excel(data_path + 文件, encoding="ISO-8859-1") my_file = 打开(文件,编码='utf8')