取消转义 Python 中的双反斜杠序列 3

Unescape double backslash sequences in Python 3

我有这样一个字符串:

'hello this is nice\r\n\xc2\xa0 goodbye'

我需要将其转换为纯 utf-8 文本。

编解码器库没有解决这个问题:

codecs.unicode_escape_decode(x)[0]
'hello this is nice\r\nÂ\xa0 goodbye'

如何将该字符串转换为干净的 utf-8 文本?

不是特别优雅,但这似乎可以满足您的要求。

>>> codecs.unicode_escape_decode(x)[0].encode('latin-1').decode('utf-8')
'hello this is nice\r\n\xa0 goodbye'

有点晦涩的是,Latin-1 编码具有吸引人的 属性,即每个字节都准确编码该字符代码,因此它可用于透明地将 bytes 转换为字符串,反之亦然。

(为了不明显,b'\xc2\xa0'U+00A0的UTF-8编码。)