Эмодзи в Python: печать, извлечение и обработка

Эмодзи — это небольшие цифровые изображения, используемые для передачи идеи или эмоции. Интеграция эмодзи в программирование делает задачи более наглядными и иногда повышает вовлечённость: можно добавлять эмодзи в комментарии, сообщения коммитов и в сам код. Python благодаря своей универсальности позволяет выполнять множество операций с эмодзи: печать, поиск, замену и удаление.
Печать эмодзи в Python
Печатать эмодзи в Python проще, чем кажется. Три распространённых подхода:
- Использовать Unicode-коды.
- Использовать короткие CLDR-имена через конструкцию \N{…}.
- Использовать специализированную библиотеку emoji.
Использование Unicode
Unicode — единый стандарт кодирования символов. У каждого эмодзи есть уникальный код в виде U+XXXX. В Python в строке замените “+” на “000” и добавьте префикс “\U”. Пример: U+1F605 становится “\U0001F605”.
Пример кода:
# grinning face
print("\U0001F600")
# beaming face with smiling eyes
print("\U0001F601")
# grinning face with sweat
print("\U0001F605")
# rolling on the floor laughing
print("\U0001F923")
# face with tears of joy
print("\U0001F602")
# slightly smiling face
print("\U0001F642")
# smiling face with halo
print("\U0001F607")
# smiling face with heart-eyes
print("\U0001F60D")
# zipper-mouth face
print("\U0001F910")
# unamused face
print("\U0001F612")Ожидаемый вывод:
😀
😁
😅
🤣
😂
🙂
😇
😅
🤐
😒Использование CLDR-имен
CLDR хранит короткие имена и ключевые слова для эмодзи. Это удобнее, чем помнить шестнадцатеричные коды: используйте синтаксис \N{имя}.
# smiling face with sunglasses
print("\N{smiling face with sunglasses}")
# grinning face
print("\N{grinning face}")
# loudly crying face
print("\N{loudly crying face}")
# rolling on the floor laughing
print("\N{rolling on the floor laughing}")
# face with tears of joy
print("\N{face with tears of joy}")
# slightly smiling face
print("\N{slightly smiling face}")
# smiling face with halo
print("\N{smiling face with halo}")
# angry face
print("\N{angry face}")
# zipper-mouth face
print("\N{zipper-mouth face}")
# unamused face
print("\N{unamused face}")Вывод будет аналогичен приводимому выше: 😎, 😀, 😭 и т.д.
Использование библиотеки emoji
Библиотека emoji упрощает вставку и замену эмодзи, но её нужно установить:
pip install emojiПример использования:
# Import required libraries
from emoji import emojize
# smiling face with sunglasses
print(emojize(":smiling_face_with_sunglasses:"))
# grinning face
print(emojize(":grinning_face:"))
# loudly crying face
print(emojize(":loudly_crying_face:"))
# rolling on the floor laughing
print(emojize(":rolling_on_the_floor_laughing:"))
# face with tears of joy
print(emojize(":face_with_tears_of_joy:"))
# slightly smiling face
print(emojize(":slightly_smiling_face:"))
# smiling face with halo
print(emojize(":smiling_face_with_halo:"))
# angry face
print(emojize(":angry_face:"))
# zipper-mouth face
print(emojize(":zipper-mouth_face:"))
# unamused face
print(emojize(":unamused_face:"))Библиотека полезна, если вы хотите работать с именованными короткими кодами или делать массовую обработку текста.
Похожая статья: Как получить новые эмодзи на Android
Извлечение всех эмодзи из текста
Извлечь эмодзи из строки можно с помощью регулярных выражений. Установите расширенный модуль regex, если планируете более сложные паттерны:
pip install regexПример (используется re.findall() / regex):
# Import required libraries
import regex as re
# Text from which you want to extract emojis
text = 'We 😊 want 😅 to 😏 extract 😁 these 😀 emojis '
# Using regular expression to find and extract all emojis from the text
emojis = re.findall(r"[^\w\s,. ]", text)
print(emojis)Ожидаемый вывод:
['😊', '😅', '😏', '😁', '😀']Примечание: регулярные выражения для эмодзи могут быть сложными из-за расширений Unicode и составных символов (семейные последовательности, флаги, модификаторы цвета кожи).
Конвертация эмодзи в текст
Библиотека demoji позволяет сопоставить символ эмодзи и понятное текстовое описание. Установите её и загрузите актуальные коды:
pip install demoji# Importing demoji library
import demoji
demoji.download_codes()Пример поиска в тексте:
# Import required libraries
import demoji
# Text from where you want to convert emojis
text = "Convert 😄 the 😎 given emojis 😒 to 😠 text"
emojis = demoji.findall(text)
# Print converted emojis
print(emojis)Ожидаемый вывод (формат: эмодзи: описание):
{'😒': 'unamused face',
'😄': 'grinning face with smiling eyes',
'😠': 'angry face',
'😎': 'smiling face with sunglasses'}Важно: demoji хранит словарь ассоциаций и периодически обновляется, поэтому вызов download_codes() нужен для загрузки актуальных данных.
Замена эмодзи на текст
Библиотека emoji умеет «демоджизировать» — заменять эмодзи на короткие имена:
# Import required libraries
import emoji
# Text from where you want to replace emojis
text = """These are some of the most used emojis
1. 😂
2. 😍
3. 🤣"""
replaced_text = emoji.demojize(text, delimiters=("", ""))
# Printing replaced text
print(replaced_text)Вывод:
These are some of the most used emojis
1. face_with_tears_of_joy
2. smiling_face_with_heart-eyes
3. rolling_on_the_floor_laughingТакой подход полезен для логов, индексации и хранения текстовых представлений эмодзи.
Удаление эмодзи из текста
Удалить эмодзи можно регулярным выражением, покрывающим диапазоны Unicode:
# Importing Regular Expression Library
import re
# Text from where you want to remove all emojis
text = """These are some of the most used emojis
1. 😂 Emoji 1
2. 😍 Emoji 2
"""
# Printing the text with emojis
print(text)
# Function to remove emoji from text
def removeEmoji(text):
regrex_pattern = re.compile(pattern = "["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
"]+", flags = re.UNICODE)
return regrex_pattern.sub(r'',text)
# Printing the text without emojis
print(removeEmoji(text))Результат:
These are some of the most used emojis
1. 😂 Emoji 1
2. 😍 Emoji 2
These are some of the most used emojis
1. Emoji 1
2. Emoji 2Учтите, что новые эмодзи и составные последовательности требуют регулярного обновления паттернов или использования специализированных библиотек, таких как regex + модуль unicodedata.
Практические советы и шорт‑кит
Шорт‑кит (когда что применять):
- Нужна простая вставка в вывод — используйте Unicode или CLDR.
- Нужна удобочитаемость для людей/логов — используйте emoji.demojize() или demoji.
- Нужна массовая очистка текста — регулярные выражения или библиотека regex.
- Требуется поддержка всех новых эмодзи — используйте demoji.download_codes() и обновляйте зависимости.
Чеклист для авторов кода:
- Убедитесь, что файлы хранятся в UTF-8.
- При логировании: заменяйте эмодзи на текст для индексирования.
- Для UI/коммитов: используйте CLDR‑имена или понятные короткие коды.
- Тесты: добавьте кейсы с составными эмодзи (семьи, флаги, тон кожи).
Роль‑ориентированные рекомендации:
- Разработчик: храните примеры эмодзи в тестах, убедитесь в корректном кодировании.
- Техрайтер: при документировании API показывайте как сырой символ, так и демоджизированный вариант.
- Оператор/DevOps: нормализуйте логи перед индексацией — удаляйте эмодзи или заменяйте на текст.
Когда подходы могут не сработать
- Регулярные выражения могут пропускать составные последовательности (ZWJ‑последовательности).
- Библиотеки могут отставать в поддержке новых эмодзи до обновления их баз данных.
- Различия в рендеринге эмодзи на платформах (iOS/Android/Windows) влияют только на отображение, не на кодовую точку.
Быстрая методология внедрения эмодзи в проект
- Оцените потребности (показ/логирование/индексация).
- Выберите стратегию (Unicode/CLDR/emoji/demoji).
- Добавьте тесты с основными и составными эмодзи.
- Задокументируйте соглашения (коммиты, сообщения, логи).
- Обновляйте библиотеки и словари эмодзи регулярно.
Схема принятия решения
flowchart TD
A[Нужно отображать эмодзи пользователю?] -->|Да| B[Использовать Unicode или emoji библиотеку]
A -->|Нет| C[Нужно логировать/индексировать?]
C -->|Да| D[Использовать demojize / demoji]
C -->|Нет| E[Удалять эмодзи или игнорировать]
B --> F[Тесты на всех целевых платформах]
D --> F
E --> FКраткий глоссарий
- Unicode — стандарт кодирования символов.
- CLDR — база коротких имён и локализации символов.
- demoji — библиотека для сопоставления эмодзи и текстовых описаний.
- emoji — Python‑пакет для вставки/замены эмодзи.
Важные замечания
Important: Всегда работайте в кодировке UTF-8 и тестируйте обработку строк с составными эмодзи. При массовой обработке текста предпочтительнее использовать библиотеки, которые обновляются и поддерживают актуальные наборы эмодзи.
Итог
Эмодзи — удобный инструмент для улучшения читаемости и вовлечённости текста в разработке. Python предлагает несколько надёжных способов работать с эмодзи: от прямого использования Unicode до применения библиотек emoji и demoji. Выберите стратегию, соответствующую задаче (показ, логирование, очистка), добавьте тесты и документируйте соглашения в проекте — и эмодзи станут полезной частью рабочего процесса.
Ключевые примеры кода сохранены в статье и готовы к запуску в вашем окружении.
Похожие материалы
Автосубтитры в DaVinci Resolve 18.5
Как убедить друзей перейти на мессенджер
Raspberry Pi без монитора: SSH через PuTTY
Разрывы страниц в Excel — вставка и удаление
Синхронизация сообщений iPhone с Mac