У цій статті ми розберемося як виводити у консолі не лише текст, а й смайли та, також, розглянемо функції для роботи з ними. Тож, для цього ми будемо використовувати бібліотеку 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, який може мати два можливих значення та надає можливість змінити стиль смайла. Можливі значення та їх сенс описаний нижче. Щоправда, варто зазначити, що не усі смайли мають текстовий вигляд.
  • text_type -  смайл буде відображатися у текстовому вигляді, тобто він буде чорно-білий.
  • emoji_type - смайл буде відображатися у звичайному вигляді, тобто він буде кольоровий.
Ось приклади застосування параметра 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}
Отримали такий результат. Означення усіх ключів цього словника наведено нижче.
  • en - назва смайлу англійською мовою, у даному випадку :snake:.
  • status - статус смайла, який впливає на його відображення, якщо статус визначається як 2, то з ним все добре і воно добре відображається.
  • E - версія бібліотеки emoji, у якій цей смайл було додано.

Вибираємо смайли з рядка

Далі подивомося на інші функції 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
Тут ми були вимушені прибрати пробіли, бо тоді функція все ще буде вважати, що окрім смайлів у рядку є й щось інше.

Заміна смайлів

Тепер переходимо до огляду останньої функції — 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. Ознайомилися з функціями бібліотеки та оглянути їх роботу на прикладах. Якщо ви хотіли б читати більше матеріалів від мене — долучайтеся до мого телеграм каналу.

Цей допис поки що не має жодних доповнень від автора/ки.

Що таке Colorama та як надавати тексту колір завдяки ній?
04 вер., 22:37

Що таке Colorama та як надавати тексту колір завдяки ній?

Magnifique Code
Magnifique Code @mystiquelord123
Скорочення посилань за допомогою бібліотеки pyshorteners
06 вер., 13:57

Скорочення посилань за допомогою бібліотеки pyshorteners

Magnifique Code
Magnifique Code @mystiquelord123
Генерація фейкових даних з Faker
06 вер., 14:40

Генерація фейкових даних з Faker

Magnifique Code
Magnifique Code @mystiquelord123
Працюємо з буфером обміну за допомогою pyperclip
10 вер., 11:01

Працюємо з буфером обміну за допомогою pyperclip

Magnifique Code
Magnifique Code @mystiquelord123