Подтвердить что ты не робот

Python: unescape "\ xXX"

У меня есть строка с экранированными данными вроде

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

Какая функция Python отменит его, чтобы я получил

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

Ответ 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'

Ответ 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

Try:

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

Он должен работать.