Гид по технологиям

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

4 min read Programming Обновлено 05 Dec 2025
Эмодзи в Python: печать и обработка
Эмодзи в 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) влияют только на отображение, не на кодовую точку.

Быстрая методология внедрения эмодзи в проект

  1. Оцените потребности (показ/логирование/индексация).
  2. Выберите стратегию (Unicode/CLDR/emoji/demoji).
  3. Добавьте тесты с основными и составными эмодзи.
  4. Задокументируйте соглашения (коммиты, сообщения, логи).
  5. Обновляйте библиотеки и словари эмодзи регулярно.

Схема принятия решения

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. Выберите стратегию, соответствующую задаче (показ, логирование, очистка), добавьте тесты и документируйте соглашения в проекте — и эмодзи станут полезной частью рабочего процесса.

Ключевые примеры кода сохранены в статье и готовы к запуску в вашем окружении.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Автосубтитры в DaVinci Resolve 18.5
Видеомонтаж

Автосубтитры в DaVinci Resolve 18.5

Как убедить друзей перейти на мессенджер
Мессенджеры

Как убедить друзей перейти на мессенджер

Raspberry Pi без монитора: SSH через PuTTY
Raspberry Pi

Raspberry Pi без монитора: SSH через PuTTY

Разрывы страниц в Excel — вставка и удаление
Excel

Разрывы страниц в Excel — вставка и удаление

Синхронизация сообщений iPhone с Mac
Инструкции

Синхронизация сообщений iPhone с Mac

SUM в Excel не складывает — причины и исправления
Инструкции

SUM в Excel не складывает — причины и исправления