对不起,通用标题。
我从外部来源收到一个字符串: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"
,但我看不到如何。
如何对该变量进行转换?
答案 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'