熊猫无法使用UTF8选项正确解释口音

时间:2020-07-02 15:29:17

标签: python excel pandas utf-8 diacritics

我无法正确读取带有重音符号的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)

有没有一种方法可以正确解释口音或确定要使用的正确编码?

2 个答案:

答案 0 :(得分:0)

您不能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数据中的编码。

您可以编写随附的代码来确定将来的编码。

答案 1 :(得分:0)

嗯,显示的内容表明您已经正确处理了Excel文件,但是在显示时出现了问题。长话短说,这就是在Latin1(或Windows cp1252)终端或编辑器中查看UTF-8编码文件时看到的。

演示:

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

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