Получить юникод значение по ключу в 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
→ Ссылка