【问题标题】:Python: unescape "\xXX"Python:取消转义“\ xXX”
【发布时间】:2015-01-29 22:54:47
【问题描述】:

我有一个带有转义数据的字符串,比如

escaped_data = '\\x50\\x51'
print escaped_data # gives '\x50\x51'

什么 Python 函数会取消它,所以我会得到

raw_data = unescape( escaped_data)
print raw_data # would print "PQ"

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用string-escape 进行解码。

    >>> escaped_data = '\\x50\\x51'
    >>> escaped_data.decode('string-escape')
    'PQ'
    

    Python 3.0 中没有string-escape,但您可以使用unicode_escape

    来自bytes 对象:

    >>> escaped_data = b'\\x50\\x51'
    >>> escaped_data.decode("unicode_escape")
    'PQ'
    

    来自 Unicode str 对象:

    >>> import codecs
    >>> escaped_data = '\\x50\\x51'
    >>> codecs.decode(escaped_data, "unicode_escape")
    'PQ'
    

    【讨论】:

    • 如何在 Python3 中做到这一点?
    • 你可以使用unicode_escape,对于bytes对象,是一样的......对于str你可以做的对象:import codecs; codecs.decode('\\x50\\51', "unicode_escape")......我编辑了答案,有人可以同行回顾一下?
    【解决方案2】:

    您可以使用“unicode_escape”编解码器:

    >>> '\\x50\\x51'.decode('unicode_escape')
    u'PQ'
    

    或者,'string-escape' 会给你一个经典的 Python 2 字符串(Python 3 中的字节):

    >>> '\\x50\\x51'.decode('string_escape')
    'PQ'
    

    【讨论】:

      【解决方案3】:

      escaped_data.decode('unicode-escape') 有帮助吗?

      【讨论】:

        【解决方案4】:

        试试:

        eval('"' + raw_data + '"')
        

        它应该可以工作。

        【讨论】:

        • 请不要eval;如果 raw_data 是用户输入怎么办?
        猜你喜欢
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 2022-06-15
        • 2010-10-14
        相关资源
        最近更新 更多