使用Python转换字符
我收到一个文本文件,但其中的一些字符不正确 下面是一个例子:使用Python转换字符,python,utf-8,Python,Utf 8,我收到一个文本文件,但其中的一些字符不正确 下面是一个例子: Apresentação/ divulgação do curso 但正确的文本是 Apresentação/ divulgação do curso 我使用Php函数utf8_decode,它可以工作,请参见下面的示例 echo utf8_decode("Apresentação/ divulgação do curso"); result Apresentação/ divulgação do curso 但
Apresentação/ divulgação do curso
但正确的文本是
Apresentação/ divulgação do curso
我使用Php函数utf8_decode,它可以工作,请参见下面的示例
echo utf8_decode("Apresentação/ divulgação do curso");
result Apresentação/ divulgação do curso
但是我不能让它在Python中工作,我尝试使用
my_str = 'Apresentação/ divulgação do curso'
print( my_str.decode("utf-8") )
但我得到了以下错误:
AttributeError: 'str' object has no attribute 'decode'
如何在Python中实现这一点?字符串是将原始UTF-8字节解码为
拉丁语-1
的结果。因此,只需将它们重新编码为latin-1
,然后解码为utf-8
:
>>> my_str = 'Apresentação/ divulgação do curso'
>>> print( my_str.encode('latin-1').decode("utf-8") )
Apresentação/ divulgação do curso
如果这是来自您在Python中打开的文件,您可能会使用latin-1
(或类似的cp1252
)作为open
的默认编码。在这种情况下,正确的解决方案是为open
提供正确的编码,以便首先正确解码,更改如下内容:
with open('myfile.txt') as f:
my_str = f.read()
致:
因此不需要额外的
编码
或解码
步骤。我认为初始文本是iso-8859-1。这将解决它:
>>> s = 'Apresentação/ divulgação do curso'
>>> bytes(s, 'iso-8859-1').decode('utf-8')
'Apresentação/ divulgação do curso'
你能显示你从哪里得到这个字符串的代码吗?通过打开所述文本文件,我从csv文件中获取文本文本文本最初是UTF-8格式的,但有人(OP的代码?)最初错误地用ISO-8859-1对其进行了解码。
>>> s = 'Apresentação/ divulgação do curso'
>>> bytes(s, 'iso-8859-1').decode('utf-8')
'Apresentação/ divulgação do curso'