【问题标题】:Unescape double backslash sequences in Python 3在 Python 3 中取消转义双反斜杠序列
【发布时间】:2021-06-19 22:08:20
【问题描述】:

我有一个这样的字符串:

'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 文本?

【问题讨论】:

    标签: python-3.x unicode utf-8 unicode-escapes


    【解决方案1】:

    不是特别优雅,但这似乎符合您的要求。

    >>> 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 编码。)

    【讨论】:

    • 我不确定您所说的“真实”是什么意思。单引号是 Python REPL 如何表示以字符 hell 开头并具有回车符 (0x13) 和换行符 (0x10) 以及 Unicode non - 中间的空格(\u00a0)。
    • @mobiusinversion 转义用于可视化调试。您还如何“看到”各种形式的空白? print 字符串以查看其渲染值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多