Pandas无法使用UTF8选项正确解释重音

2024-06-16 09:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法正确读取带有熊猫重音字符的excel数据

data = pd.read_excel("C:/Users/XXX/Desktop/Help_me_plz.xlsx", encoding='utf-8')

这是我得到的:

    ID  Titre   Entité
0   2020044459  SOAPPRO - Problème ouverture documents Root entity > Utilisateurs
1   2020048819  Probleme de conformité Smartphone KMSE Root entity > Utilisateurs

正如你们所看到的,重音并没有被正确解释,而且看起来像是奇怪的字符

我在互联网上搜索并尝试了几种方法:

  • 将文件转换为csv格式

  • 转换不同编码类型的文件

  • 用记事本打开文件,但问题仍然存在

  • 我甚至尝试使用以下返回错误输出的代码:

    from unidecode import unidecode
    print(unidecode('Entité'))
    

我期待Entité,但它给了我以下输出:EntitA(c)

有没有一种方法可以正确解释重音或识别要使用的正确编码


Tags: 文件数据方法编码dataroot字符excel
2条回答

无法unidecode('Entité'),因为它已被解码为'Entité'

您需要在源位置修复数据,它似乎是您的电子表格

看看Are XLSX files UTF-8 encoded by definition?

以及:https://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.io.parsers.read_csv.html

encoding='utf-8'参数被传递给一个底层的pands.io.parsers.TextFileReader对象,该对象盲目地接受您知道您的文件是在UTF-8中编码的,而这里的情况似乎不是这样

试试utf-16latin-1,看看结果是否改变。处理这个问题的方法是找出文件实际使用的编码方式

XLSX格式是一个压缩的XML文档。将扩展名更改为zip,打开它并检查XML数据中的编码

您可以编写附带的代码,以便将来确定编码

嗯,您显示的是一个提示,表明您已正确处理Excel文件,但问题发生在显示时。长话短说,这是当您在拉丁1(或Windows cp1252)终端或编辑器中查看UTF-8编码文件时看到的

演示:

>>> print('Problème'.encode().decode('latin1'))
Problème
>>> print('Entité'.encode().decode('latin1'))
Entité

因此,您应该显示生成该显示的代码,问题就在那里

相关问题 更多 >