Python: печать символов Юникода экранирована - PullRequest
1 голос
/ 02 ноября 2010

Я пытался преобразовать ascii-строку в экранированную псевдо-юникод-экранированную строку, используя python, но пока не получилось.

Что я хочу сделать: преобразовать ASCII 'a' в строку ASCII "<U0061>"

Я могу преобразовать" a "с помощью Unicode ('a'), но не могу сохранить числовое значение a в строке ascii.

Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 02 ноября 2010

Вы можете использовать ord() для преобразования символа в его символьное значение (str) или кодовую точку (unicode).Затем вы можете использовать соответствующее форматирование строки, чтобы преобразовать его в текстовое представление.

'U+%04X' % (ord(u'A'),)
1 голос
/ 02 ноября 2010

Здесь представлен минималистский пример, который позволяет вам использовать решение Ignacio со встроенным в Python механизмом кодирования / декодирования.Проверьте http://docs.python.org/library/codecs.html, если вам нужно что-то более согласованное (с правильной обработкой ошибок и т. Д.)

import codecs


def  encode(text, error="strict"):
    return ("".join("<U%04x>" % ord(char) for char in text), len(text))

def search(name):
    if name == "unicode_ltgt":
        info = codecs.CodecInfo(encode, None, None, None)
        info.name = "unicode_ltgt"
        info.encode = encode
        return info
    return None

codecs.register(search)

if __name__ == "__main__":
    a = u"maçã"
    print a.encode("unicode_ltgt")

(просто импортировав это как модуль, кодек "unicode_ltgt" будет установлени быть доступным для любого вызова ".encode", как в данном примере)

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