我无法正确读取带有重音符号的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)
。
有没有一种方法可以正确解释口音或确定要使用的正确编码?
答案 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-16
或latin-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é
因此,您应该显示产生该显示的代码,问题就在那里...