Pandas 无法使用 UTF8 选项正确解释重音
Pandas can't correctly interprete accent with UTF8 option
我无法正确读取带有 pandas 重音字符的 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
如您所见,重音未被正确解释并显示为奇怪的字符。
我在 Internet 上搜索并尝试了几种方法:
将文件转换成csv
以各种编码类型转换文件
用记事本打开文件,问题依旧
我什至尝试使用下面的代码 return 错误输出:
from unidecode import unidecode
print(unidecode('Entité'))
我期待 Entité
但它给了我以下输出:EntitA(c)
.
有没有办法正确解释重音或识别要使用的正确编码?
你不能 unidecode('Entité')
因为它已经被解码为 'Entité'
。
您需要修复源中的数据,这似乎是您的电子表格。
看看
还有: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 数据中的编码。
您以后可以编写随附的代码来确定编码。
嗯,你显示的是提示你已经正确处理了Excel文件,但是问题出现在显示的时候。长话短说,这就是您在 Latin1(或 Windows cp1252)终端或编辑器中查看 UTF-8 编码文件时看到的内容。
演示:
>>> print('Problème'.encode().decode('latin1'))
Problème
>>> print('Entité'.encode().decode('latin1'))
Entité
所以你应该显示产生那个显示的代码,问题就在那里...
我无法正确读取带有 pandas 重音字符的 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
如您所见,重音未被正确解释并显示为奇怪的字符。
我在 Internet 上搜索并尝试了几种方法:
将文件转换成csv
以各种编码类型转换文件
用记事本打开文件,问题依旧
我什至尝试使用下面的代码 return 错误输出:
from unidecode import unidecode print(unidecode('Entité'))
我期待 Entité
但它给了我以下输出:EntitA(c)
.
有没有办法正确解释重音或识别要使用的正确编码?
你不能 unidecode('Entité')
因为它已经被解码为 'Entité'
。
您需要修复源中的数据,这似乎是您的电子表格。
看看
还有: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 数据中的编码。
您以后可以编写随附的代码来确定编码。
嗯,你显示的是提示你已经正确处理了Excel文件,但是问题出现在显示的时候。长话短说,这就是您在 Latin1(或 Windows cp1252)终端或编辑器中查看 UTF-8 编码文件时看到的内容。
演示:
>>> print('Problème'.encode().decode('latin1'))
Problème
>>> print('Entité'.encode().decode('latin1'))
Entité
所以你应该显示产生那个显示的代码,问题就在那里...