Кодовое обозначение юникода Python для символа Юникод

Я пытаюсь записать в плоский файл несколько китайских или русских или разных неанглийских наборов символов для тестирования. Я зациклился на том, как выводить шестнадцатеричное или десятичное значение Unicode в соответствующий символ.

Например, в Python, если у вас есть жесткий набор символов, таких как абвгдежзийкл, вы должны назначить value = u"абвгдежзийкл" и без проблем.

Если, однако, у вас есть один десятичный или шестнадцатеричный десятичный знак, например 1081/0439, который хранится в переменной, и вы хотели бы распечатать это с соответствующим фактическим символом (а не только с выходом 0x439), как это сделать? Значение Unicode decimal/hex выше относится к й.

Ответ 1

Python 2: используйте unichr():

>>> print(unichr(1081))
й

Python 3: используйте chr():

>>> print(chr(1081))
й

Ответ 2

Итак, ответ на вопрос:

  • преобразовать шестнадцатеричное значение в десятичное с int(hex_value, 16)
  • тогда получим соответствующий strin с chr().

Подводя итог:

>>> print(chr(int('0x897F', 16)))
西

Ответ 3

Если вы столкнулись с ошибкой:

ValueError: unichr() arg не в диапазоне (0x10000) (узкая сборка Python)

При попытке конвертировать шестнадцатеричное значение с помощью unichr, вы можете обойти эту ошибку, выполнив что-то вроде:

>>> n = int('0001f600', 16)
>>> s = '\\U{:0>8X}'.format(n)
>>> s
'\\U0001F600'
>>> binary = s.decode('unicode-escape')
>>> print(binary)
😀