Я конвертирую некоторый код из python2 в python3.Преобразование string.decode ('utf8') из python2 в python3
В python2, я могу сделать следующие вещи:
>>> c = '\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
帐户
>>> c.decode('utf8')
u'\u5e10\u6237'
Как я могу получить тот же выход (и '\ u5e10 \ u6237') в Python3?
Редактировать
Для тех, кто еще с этой проблемой, я понял, посмотрев на ответы, которые, чтобы сделать использование результата каждый символ должен рассматриваться как отдельный элемент. Выделенное представление unicode, такое как '\ u5e10 \ u6237', является строкой, поэтому оно не будет естественно разделяться на части, которые соответствуют оригинальным китайским символам.
>>> c = '帐户'
>>> type(c.encode('unicode-escape').decode('ascii'))
<class 'str'>
>>> [l for l in c.encode('unicode-escape').decode('ascii')]
['\\', 'u', '5', 'e', '1', '0', '\\', 'u', '6', '2', '3', '7']
Вы должны отделить каждый символ в строке ввода и перевести его отдельно в массив, если вы не хотите, чтобы разобрать его снова в следующей части программы. Мое решение было таким образом:
>>> [l.encode('unicode-escape').decode('ascii') for l in c]
['\\u5e10', '\\u6237']
Альтернативное решение сделать каждый символ в шестнадцатеричном представлении:
>>> [hex(ord(l)) for l in c]
['0x5e10', '0x6237']
Спасибо за помощь.
Лично я бы написать эту функцию определения функции get_unicode_code (текст): результата = '' .join ( символа, если ог (символ) <128 еще '\\ и' + формат (ог (символ) , 'x') для символа в тексте ) ' –
@JonathanHartley Спасибо, что исправили мой код и сделали его более питоническим. Эта функция возвращает то же самое, что и последняя строка декана 'd.encode ('unicode-escape'). Decode ('ascii')' Я исправил ошибку в круглых скобках и добавил еще один код, чтобы функция имела желаемый результат. Формат здесь, чтобы преобразовать int в его шестнадцатеричное значение, которое затем используется для ручного создания unicode – HolyDanna
Спасибо, я получаю его сейчас! –