Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python转换字符_Python_Utf 8 - Fatal编程技术网

使用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'