Получить юникод значение по ключу в Python
Есть строка i = '1234', как добиться значения l = '\u1234'?
Ответы (2 шт):
Автор решения: Alexander Rakhmaev
→ Ссылка
Строка '1234'в ASCII представлении будет иметь вид [73, 80, 81, 82] в шестнадцатеричной системе счисления. И [49, 50, 51, 52] в десятеричной.
i = '1234'
print([int(str(j), base=16) for j in list(i.encode('utf-8'))])
print(list(i.encode('utf-8')))
Чтобы получить из '1234' '\u1234' просто в терминале, то использую конкатенацию с экранированием:
i = '1234'
print('\\u' + i)
Выход:
\u1234
'\u1234' - это ОДИН 16-битный символ UTF-8 выглядит он так: ሴ.
Ты не можешь добавить \u просто так из за того, что символ '1' в бинарном виде не соответствует ASCII коду.
Автор решения: gil9red
→ Ссылка
После \u идет 16-е число, поэтому приведите строку 1234 к числу с основанием 16 (через int) и от этого числа получите символ (функция chr) - будет тот символ:
l = '\u1234'
print(l, l.encode('unicode-escape'), ord(l), hex(ord(l)))
l1 = '1234'
l2 = chr(int(l1, 16))
print(l2, l2.encode('unicode-escape'), ord(l2), hex(ord(l2)))
Результат:
ሴ b'\\u1234' 4660 0x1234
ሴ b'\\u1234' 4660 0x1234