解码Python字符串

时间:2018-12-17 13:58:32

标签: python-3.x encoding

对不起,通用标题。

我从外部来源收到一个字符串:txt = external_func()

我正在复制/粘贴各种命令的输出,以确保您了解我在说什么:

In [163]: txt
Out[163]: '\\xc3\\xa0 voir\\n'

In [164]: print(txt)
\xc3\xa0 voir\n

In [165]: repr(txt)
Out[165]: "'\\\\xc3\\\\xa0 voir\\\\n'"

我正在尝试将文本转换为UTF-8(?)以具有txt = "à voir\n",但我看不到如何。

如何对该变量进行转换?

1 个答案:

答案 0 :(得分:3)

您可以使用encode-method of the str class.txt编码为类似字节的对象 然后可以使用encoding unicode_escape重新解码此字节状对象。

现在,您的字符串已解析为所有转义序列,但已解码latin-1。您仍然必须使用latin-1对其进行编码,然后再次使用utf-8对其进行解码。

>>> txt = '\\xc3\\xa0 voir\\n'
>>> txt.encode('utf-8').decode('unicode_escape').encode('latin-1').decode('utf-8')
'à voir\n'

codecs模块还具有一个称为escape_decode的{​​{3}}:

>>> import codecs
>>> codecs.escape_decode(bytes('\\xc3\\xa0 voir\\n', 'utf-8'))[0].decode('utf-8')
'à voir\n'