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

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

5 min read Python Обновлено 31 Mar 2026
Эмодзи в Python: печать, извлечение и замена
Эмодзи в Python: печать, извлечение и замена

Коллаж эмодзи на цветном фоне

Важно: кодовые примеры рассчитаны на Python 3.6+ и требуют установки соответствующих библиотек (pip install emoji, regex, demoji), где это указано.

Зачем использовать эмодзи в коде и документации

Эмодзи — компактный графический способ передать эмоцию или категорию. В коде их применяют в комментариях, сообщениях коммитов, логах и документации, чтобы улучшить читаемость и ускорить восприятие. Для машинной обработки эмодзи можно представлять как Unicode-символы или преобразовывать в читабельные метки.

Краткое определение: эмодзи — это графический символ, представленный в Unicode и часто отображаемый как цветная иконка на платформах.

Печать эмодзи в Python

Печатать эмодзи в Python проще, чем кажется. Основные способы:

  • через Unicode-коды;
  • через CLDR-имена (именованные последовательности);
  • через библиотеку emoji, которая даёт удобный синтаксис и демонизацию.

Использование Unicode-символов

Unicode присваивает уникальный код каждому эмодзи. В Python Unicode-escape записывается как \U000XXXXX: знак “+” из формата U+ заменяется на 000 и добавляется префикс “\U”.

Пример: U+1F605 → \U0001F605

# улыбающееся лицо
print("\U0001F600")

# лицо с улыбающимися глазами
print("\U0001F601")

# лицо с каплей пота
print("\U0001F605")

# валяется от смеха
print("\U0001F923")

# лицо со слезами радости
print("\U0001F602")

# слегка улыбающееся лицо
print("\U0001F642")

# лицо с нимбом
print("\U0001F607")

# лицо с глазами в виде сердца
print("\U0001F60D")

# лицо с молнией на рту (застегнутый рот)
print("\U0001F910")

# недовольное лицо
print("\U0001F612")

Вывод примера обычно выглядит так (в зависимости от шрифта и платформы):

😀
😁
😅
🤣
😂
🙂
😇
😅
🤐
😒

Примечание: поведение зависит от терминала/консоли и кодировки. В Linux/Windows/ macOS убедитесь, что терминал поддерживает UTF-8 и выбран подходящий шрифт.

Использование CLDR-имен

CLDR (Common Locale Data Repository) содержит стандартные имена для эмодзи. В Python их можно использовать через escape-последовательность \N{имя}.

# лицо в темных очках
print("\N{smiling face with sunglasses}")

# улыбающееся лицо
print("\N{grinning face}")

# плачет навзрыд
print("\N{loudly crying face}")

# валяется от смеха
print("\N{rolling on the floor laughing}")

# лицо со слезами радости
print("\N{face with tears of joy}")

# слегка улыбающееся лицо
print("\N{slightly smiling face}")

# лицо с нимбом
print("\N{smiling face with halo}")

# злое лицо
print("\N{angry face}")

# лицо с застёгнутым ртом
print("\N{zipper-mouth face}")

# недовольное лицо
print("\N{unamused face}")

Это удобно, когда вы хотите читабельный код без вставки длинных шестнадцатеричных кодов.

Использование библиотеки emoji

Библиотека emoji упрощает работу с эмодзи: именованные теги, демоджизация и обратная замена. Сначала установите библиотеку:

pip install emoji

Пример использования:

# Импорт
from emoji import emojize

# лицо в темных очках
print(emojize(":smiling_face_with_sunglasses:"))

# улыбающееся лицо
print(emojize(":grinning_face:"))

# плачет навзрыд
print(emojize(":loudly_crying_face:"))

# валяется от смеха
print(emojize(":rolling_on_the_floor_laughing:"))

# лицо со слезами радости
print(emojize(":face_with_tears_of_joy:"))

# слегка улыбающееся лицо
print(emojize(":slightly_smiling_face:"))

# лицо с нимбом
print(emojize(":smiling_face_with_halo:"))

# злое лицо
print(emojize(":angry_face:"))

# лицо с застёгнутым ртом
print(emojize(":zipper-mouth_face:"))

# недовольное лицо
print(emojize(":unamused_face:"))

Вывод будет зависеть от системы, но библиотека делает код более декларативным. Если вам нужно контролируемое отображение или замена на текстовые теги — emoji предоставляет инструменты для этого.

Важно: версии библиотеки и набор emoji могут различаться; при поддержке новых символов обновляйте библиотеку.

Извлечение всех эмодзи из текста

Чтобы найти все эмодзи в строке, удобно применять регулярные выражения. Часто используют библиотеку regex (её расширенные возможности лучше подходят для Unicode):

pip install regex

Пример:

import regex as re

text = 'We 😊 want 😅 to 😏 extract 😁 these 😀 emojis '

# Простое регулярное выражение, которое захватывает нетекстовые символы
emojis = re.findall(r'[^\w\s,. ]', text)
print(emojis)

Вывод:

['😊', '😅', '😏', '😁', '😀']

Примечание: корректное покрытие всех эмодзи — нетривиальная задача, потому что в Unicode есть сложные последовательности (семейства, флаги, модификаторы тонов кожи). Для надёжной обработки стоит использовать специализированные пакеты.

Конвертация эмодзи в текст

demoji — библиотека, которая умеет находить эмодзи и давать текстовые описания. Установка:

pip install demoji

После установки нужно загрузить актуальную базу кодов:

import demoji
demoji.download_codes()

Пример использования:

import demoji

text = "Convert 😄 the 😎 given emojis 😒 to 😠 text"

emojis = demoji.findall(text)

print(emojis)

Примерный вывод:

{'😒': 'unamused face',
 '😄': 'grinning face with smiling eyes',
 '😠': 'angry face',
 '😎': 'smiling face with sunglasses',
}

Важно: demoji возвращает описания на английском (исходные данные CLDR). При необходимости переводите метки для локализованных интерфейсов.

Замена эмодзи на их описание

Библиотека emoji позволяет заменить символы на текстовые теги (демоджизация). Пример:

import emoji

text = """These are some of the most used emojis
1. 😂
2. 😍
3. 🤣"""

replaced_text = emoji.demojize(text, delimiters=("", ""))

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. Пример функции:

import re

text = """These are some of the most used emojis
1. 😂 Emoji 1
2. 😍 Emoji 2
"""

print(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)

print(removeEmoji(text))

Вывод покажет исходный текст и версию без эмодзи. Учтите, что такой диапазон не покрывает сложные модификаторы и составные последовательности — для полного удаления потребуется более продвинутая логика.

Когда методы не сработают или дают некорректный результат

  • Терминал или шрифт не поддерживает отображение новых эмодзи — будут отображаться пустые квадраты или символы-заполнители.
  • Простые регулярки не покрывают составные последовательности, такие как флаги (пара кодовых точек) или семьи (несколько эмодзи, связанных специальными символами).
  • Библиотеки могут содержать устаревшие данные: новые эмодзи добавляются в Unicode и требуют обновления пакетов.

Альтернативные подходы

  • Использовать готовые сервисы/API (например, Unicode CLDR или emoji API) для получения актуального списка и описаний.
  • Хранить в базе маппинг кодэмодзи → локализованнаястрока и обновлять его периодически.
  • Для веб-интерфейсов использовать изображения SVG/PNG, чтобы обеспечить единообразный внешний вид.

Практическая методика и чек-листы

Мини-методология при работе с эмодзи в проекте:

  1. Выберите цель: отображение, логирование, поиск или удаление.
  2. Проверяйте поддержку в целевых средах (терминал, веб, мобильное приложение).
  3. Выберите стратегию (Unicode/CLDR/библиотека/API).
  4. Напишите тесты на случаи с составными последовательностями и модификаторами.
  5. Обновляйте словари при релизе новых версий Unicode.

Чек-лист для разработчика:

  • Консоль поддерживает UTF-8.
  • Установлены необходимые библиотеки (emoji, regex, demoji).
  • Обработаны составные последовательности (семьи, флаги).
  • Добавлены unit-тесты для ключевых случаев.

Чек-лист для автора документации:

  • Эмодзи используются последовательно и не заменяют важную текстовую информацию.
  • Для международных пользователей присутствуют текстовые альтернативы.
  • Локализация описаний эмодзи учтена, если требуется.

Критерии приёмки

  • Эмодзи корректно отображаются в целевых средах.
  • Функции извлечения/удаления корректно обрабатывают составные последовательности в 90% реальных кейсов.
  • Для логов эмодзи либо демоджированы, либо удалены согласно требованиям к индексированию.

Совместимость и замечания по локализации

  • Unicode постоянно развивается: проверяйте соответствие версии Unicode в зависимости от платформы.
  • demoji возвращает английские описания — при локализации переводите их в словарь.
  • В вебе используйте fallback-иконки, если шрифт не поддерживает новые эмодзи.

Небольшая галерея крайних случаев

  • Флаги состоят из пары региональных индикаторов и могут быть неправильно распознаны простыми шаблонами.
  • Комбинации тонов кожи — последовательности с модификатором, их легко удалить по ошибке, если не учитывать модификаторы.
  • Составные эмодзи (семьи, профессии с гендерным признаком) — состоят из нескольких кодовых точек.

Глоссарий

  • CLDR — база локализации Unicode с именами символов.
  • Demojize — замена эмодзи на текстовое имя или тег.
  • Составная последовательность — эмодзи, которое состоит из нескольких кодовых точек.

Итог: эмодзи удобны для визуальной коммуникации и могут быть успешно обработаны в Python разными способами. Выбирайте подход в зависимости от задачи: простая печать — Unicode или CLDR; удобная работа с тегами и демоджизация — библиотека emoji; для извлечения и преобразования в текст — regex и demoji.

Ключевые ссылки и команды установки:

  • pip install emoji
  • pip install regex
  • pip install demoji

Примечание: регулярно обновляйте используемые библиотеки, чтобы поддерживать актуальную базу эмодзи.

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

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

Отключить Siri: не зачитывать уведомления
iPhone

Отключить Siri: не зачитывать уведомления

Google Календарь: тайм‑блокинг для продуктивности
Productivity

Google Календарь: тайм‑блокинг для продуктивности

Как перейти на новый компьютер быстро и безопасно
Компьютеры

Как перейти на новый компьютер быстро и безопасно

Nearby sharing в Windows 11 — как включить и использовать
Windows

Nearby sharing в Windows 11 — как включить и использовать

Как убрать уведомления Windows 10
Windows

Как убрать уведомления Windows 10

Content-Aware Fill в Photoshop — как удалить объекты
Фотография

Content-Aware Fill в Photoshop — как удалить объекты