У цій статті ми розберемося як виводити у термінал не лише текст, а й смайли та, також, розглянемо функції для роботи з ними. Тож, для цього ми будемо використовувати бібліотеку emoji
, яка дозволяє працювати з різного роду смайлами.
Встановлення
Windows:
pip install emoji
MacOS:
pip3 install emoji
Linux:
pip install emoji
Тепер можемо нарешті розглянути функціонал даної бібліотеки на прикладах.
Виведення смайлів у терміналі
Першою розглянемо функцію emojize()
, яка надає можливість виводити текст зі смайлами. Ми просто передаємо текст з назвою конкретного смайлу у якості параметра, і у результаті отримаємо текст з вказаним смайлом. Ось приклад реалізації того, що я тільки но описав:
import emoji
emoji_text = "We love Python programming language :snake:"
print(emoji.emojize(emoji_text))
Результат роботи коду:
We love Python programming language 🐍
Якраз :snake:
у даному випадку і є назвою смайлу. Замість цієї назви ми можемо вказати будь-яку іншу назву смайлу, тільки зберігаємо двокрапки між його назвою. Подивитися назви смайлів можна тут.
Думаю буде доречним навести ще пару прикладів цієї функції. Все робимо так само як і у першому прикладі тільки змінюємо назву смайла та текст.
Приклад 2:
second_example = "Some hearts :heart_on_fire: :yellow_heart: :orange_heart:"
print(emoji.emojize(second_example))
Some hearts ❤️🔥 💛 🧡
Приклад 3:
third_example = "Hi readers! :waving_hand:"
print(emoji.emojize(third_example))
Hi readers! 👋
Також emojize()
має ще й параметр variant
, який може мати два можливих значення та надає можливість змінити стиль смайла. Можливі значення та їх сенс описаний у таблиці. Щоправда, варто зазначити, що не усі смайли мають текстовий вигляд.
Значення | Сенс |
---|---|
| Смайл буде відображатися у текстовому вигляді, тобто він буде чорно-білий. |
| Смайл буде відображатися у звичайному вигляді, тобто він буде кольоровий. |
Ось приклади застосування параметра variant
:
emoji_text = "It's time to dinner! :alarm_clock:"
print(emoji.emojize(emoji_text, variant="text_type"))
It's time to dinner! ⏰︎
emoji_text = "It's time to dinner! :alarm_clock:"
print(emoji.emojize(emoji_text, variant="emoji_type"))
It's time to dinner! ⏰️
Наступною функцією, котру ми подивимося, буде функція demojize()
. Вона є прямою протилежністю emojize()
, бо навідміну від неї вона показує назву смайла, а не сам смайл. Тут усе просто. Ось текст з нашого першого прикладу, тільки у цьому випадку ми вказали його як параметр функції demojize()
. Приклад наведений нижче:
emoji_text = "We love Python programming language 🐍"
print(emoji.demojize(emoji_text))
А ось і результат:
We love Python programming language :snake:
Словник смайлів
Також назву та іншу інформацію про смайл можна подивитися завдяки словнику EMOJI_DATA[]
. Ось як це зробити:
emoji_symbol = "🐍"
print(emoji.EMOJI_DATA[emoji_symbol])
{'en': ':snake:', 'status': 2, 'E': 0.6}
Отримали такий результат. Означення усіх ключів цього словника наведено у таблиці.
Ключ | Сенс |
---|---|
| Назва смайлу англійською мовою, у даному випадку |
| Статус смайла, який впливає на його відображення, якщо статус визначається як 2, то з ним все добре і воно добре відображається. |
| Версія бібліотеки |
Вибираємо смайли з рядка
Далі подивомося на інші функції emoji
. Тож, наступною на черзі буде функція analyze()
. За допомогою функції analyze()
ми можемо вибирати смайли з рядка.
Ось приклад її використання у коді:
emoji_text = "Student - 🧑🎓 farmer - 🧑🌾 cook - 🧑🍳"
analyzed_text = emoji.analyze(emoji_text)
for i in analyzed_text:
print(i)
Отже, у цьому прикладі ми створюємо змінну emoji_text, якій присвоюємо рядок зі смайлами та передаємо її у функцію analyze()
. У циклі for
ми просто проходимося по кожному смайлу.
У результаті отримуємо:
Token(chars='🧑\u200d🎓', value=EmojiMatch(🧑🎓, 10:13))
Token(chars='🧑\u200d🌾', value=EmojiMatch(🧑🌾, 23:26))
Token(chars='🧑\u200d🍳', value=EmojiMatch(🧑🍳, 34:37))
У параметрі chars
ми бачимо символи, які і утворюють смайли, а у параметрі value
— позицію смайлів. Код \u200d
потрібен для того, щоб з’єднати два смайли в один, бо у цьому прикладі ми використовуємо саме смайли, що складаються з двох смайлів. Цей код не займає жодного місця на екрані.
Також треба відмітити той факт, що на ми бачимо, що смайл займає місце як один символ, але насправді смайл часто може займати місце як декілька символів. Тому враховуйте це, коли будете дивитися на позиції смайлів (наприклад, 10:13, 23:26, 34:37).
Знаходимо смайли та їх позицію у рядку
Ще одна функція для роботи зі смайлами — emoji_list()
. Ця функція знаходить усі смайли у рядку та показує їх позицію.
Ось приклад застосування:
emoji_text = "Faces of animals: 🦁 🐯 🐻 🐼"
print(emoji.emoji_list(emoji_text))
[{'match_start': 18, 'match_end': 19, 'emoji': '🦁'}, {'match_start': 20, 'match_end': 21, 'emoji': '🐯'}, {'match_start': 22, 'match_end': 23, 'emoji': '🐻'}, {'match_start': 24, 'match_end': 25, 'emoji': '🐼'}]
Отримали список, у якому є чотири словника з інформацією про кожен смайл у рядку. Тобто, ‘math_start‘
та ‘math_end‘
— початкова та кінцева позиції смайлів у рядку, ‘emoji‘
— вказує на конкретний смайл, до якого відноситься попередня інформація про позицію. І знову-таки, не забуваємо, що смайли часто займають місце більше ніж один символ.
Підраховуємо кількість смайлів
Переходимо до розгляду наступної функції, а саме функції emoji_count()
. Щодо emoji_count()
, то вона просто підраховує кількість смайлів у рядку.
Одразу тестуємо функцію:
emoji_text = "Random smiles: 😀 😁 😂 🤪 🤗"
print("Number of emojis:", emoji.emoji_count(emoji_text))
Number of emojis: 5
Одна з особливостей функції emoji_count()
— параметр unique
, який дозволяє встановити підраховувати (чи ні) смайли, що повторюються у наданому рядку. Додамо до нашого попереднього рядку зі смайлами вже наявний у цьому рядку смайл і протестуємо.
Ось приклад з параметром unique=”True”
:
emoji_text = "Random smiles: 😀 😁 😂 🤪 🤗 😀"
print("Number of emojis:", emoji.emoji_count(emoji_text, unique=True))
Number of emojis: 5
Перевірка, чи є передане значення смайлом
Функція is_emoji()
перевіряє, чи є передане у неї значення смайлом. Сенс функції доволі зрозумілий, тому одразу переходимо до прикладу:
emoji_text = "😀"
print(emoji.is_emoji(emoji_text))
True
Тобто у даному прикладі передане функції значення є смайлом. Ось ще один приклад:
emoji_text = "😀 😁 😂 🤪 🤗 😀"
print(emoji.is_emoji(emoji_text))
False
Щодо особливості цієї функції — вона надасть True
, тільки коли весь рядок одним смайлом. Якщо рядок буде містити більше одного смайла, то вона покаже False
. Також треба пам’ятати, що деякі смайли хоч і вважаються одним цілим, але складаються з двох. Ось такий приклад:
emoji_text = "🧑🎨"
print(emoji.is_emoji(emoji_text))
True
Для того, щоб перевірити чи має весь рядок тільки смайли є функція purely_emoji()
. Ось приклад її використання:
emoji_text = "Random smiles: 😀 😁 😂 🤪 🤗 😀"
print(emoji.purely_emoji(emoji_text))
False
І ще один приклад:
emoji_text = "😀😁😂🤪🤗😀"
print(emoji.purely_emoji(emoji_text))
True
Тут ми були вимушені прибрати пробіли, бо тоді функція все ще буде вважати, що окрім смайлів у рядку є й щось інше.
Заміна смайлів
Тепер переходимо до огляду останньої функції — replace_emoji()
. У можливості цієї функції входить заміна смайлів. Просто надаємо функції рядок зі смайлом та вказуємо у параметрі replace
значення, на яке хочемо замінити наш смайл.
Приклад 1:
emoji_text = "This is 🤖"
print(emoji.replace_emoji(emoji_text, replace="👾"))
This is 👾
Приклад 2:
emoji_text = "This is 🤖"
print(emoji.replace_emoji(emoji_text, replace=" "))
This is
Ось ми і побачили replace_emoji()
у дії.
Висновок
Отже, у цій статті ми розлянули як користуватися бібліотекою emoji
. Ознайомилися з функціями бібліотеки та оглянути їх роботу на прикладах. Якщо ви хотіли б читати більше матеріалів від мене — долучайтеся до мого телеграм каналу.