Расшифровка смайликов из твитов в Python 3

У меня есть простой скрипт на Python, который получает текст твита.

Однако эмодзи каким-то образом закодированы, поэтому в выводе \xf0\x9f\x90\xa3 они выглядят так.

Есть ли способ узнать, что это за смайлик из этого вывода?


person EyfI    schedule 31.03.2016    source источник
comment
import unicodedata; print(unicodedata.name(b"\xf0\x9f\x90\xa3".decode('utf-8'))) говорит HATCHING CHICK. Трудно сказать больше, не зная, что именно делает ваш скрипт...   -  person mata    schedule 31.03.2016
comment
@mata Похоже, он получает текст твита, а смайлики отображаются как \xf0\x9f\x90\xa3, поэтому похоже, что он хочет знать, что это за смайлики на самом деле...   -  person Aaron    schedule 31.03.2016


Ответы (1)


Скорее всего, это кодировка UTF-8 (наряду с остальными данными, просто текст ASCII отображается одинаково в ASCII и UTF-8).

Если у вас есть bytes как b'\xf0\x9f\x90\xa3', вы просто сделаете:

b = b'\xf0\x9f\x90\xa3'
txt = b.decode('utf-8')

Если вы получили его как str, это, вероятно, ошибочное декодирование как latin-1 или какая-то другая кодовая страница, поэтому просто отмените его и повторите с UTF-8:

b = '\xf0\x9f\x90\xa3'
txt = b.encode('latin-1').decode('utf-8')
# If it's not latin-1, could be sys.getdefaultencoding()

Который получает порядковый номер 0x1f423 (мой компьютер не может его отобразить, иначе я бы добавил его здесь), который находится в правильном диапазоне для большинства смайликов. Как отмечено в комментариях, unicodedata сообщает о символе как HATCHING CHICK.

person ShadowRanger    schedule 31.03.2016