Как мне преобразовать строку, отформатированную как юникод, в юникод? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть переменная со строкой '\ u96e8', и я хочу преобразовать ее в Unicode, потому что функция kanji_to_romaji () принимает только Unicode.Как бы я это сделал?Я на питоне 2.7

# -*- coding: UTF-8 -*-
from kanji_to_romaji import kanji_to_romaji
message = '\u96e8'
message = unicode(message)
x = kanji_to_romaji(message)
print(x)

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете декодировать строку байтов в кодировку Unicode, используя кодировку unicode-escape .

>>> message = '\u96e8'
>>> unicode_message = message.decode('unicode-escape')
>>> unicode_message
u'\u96e8'
>>> print unicode_message
雨
0 голосов
/ 22 февраля 2019

Использование ast.literal_eval:

>>> message = '\u96e8'
>>> ast.literal_eval('u"{}"'.format(message))
u'\u96e8'

Хитрость заключается в создании строки, содержащей строковый литерал unicode для передачи в качестве аргумента literal_eval.То есть u"\u96e8", а не просто \u96e8.

(хотя это только отчасти правильно. Оно потерпит неудачу, если само значение message содержит двойные кавычки. Возможно, есть и другие случаигде это также не удается.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...