Ответ 1
Python 2: используйте unichr()
:
>>> print(unichr(1081))
й
Python 3: используйте chr()
:
>>> print(chr(1081))
й
Я пытаюсь записать в плоский файл несколько китайских или русских или разных неанглийских наборов символов для тестирования. Я зациклился на том, как выводить шестнадцатеричное или десятичное значение Unicode в соответствующий символ.
Например, в Python, если у вас есть жесткий набор символов, таких как абвгдежзийкл
, вы должны назначить value = u"абвгдежзийкл"
и без проблем.
Если, однако, у вас есть один десятичный или шестнадцатеричный десятичный знак, например 1081/0439, который хранится в переменной, и вы хотели бы распечатать это с соответствующим фактическим символом (а не только с выходом 0x439), как это сделать? Значение Unicode decimal/hex выше относится к й
.
Python 2: используйте unichr()
:
>>> print(unichr(1081))
й
Python 3: используйте chr()
:
>>> print(chr(1081))
й
Итак, ответ на вопрос:
int(hex_value, 16)
chr()
.Подводя итог:
>>> print(chr(int('0x897F', 16)))
西
Если вы столкнулись с ошибкой:
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)
😀