Друкарня від WE.UA

Як виводити у консолі смайли із застосуванням emoji?

Зміст

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

І ще один приклад:

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

Всім дякую за увагу!

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@nocturnal_reader we.ua/nocturnal_reader

Нічний читач

53Довгочити
616Прочитання
17Підписники
Підтримати
На Друкарні з 14 липня

Більше від автора

  • Метод split() у Python

    Всіх вітаю! Сьогодні ми розглянемо метод split() у Python та побачимо, як використовувати її на прикладах.

    Теми цього довгочиту:

    Програмування
  • Створюємо стовпчикові графіки за допомогою plotly

    Всіх вітаю! У цій статті пропоную вам зануритися у графіки та візуалізацію на Python за допомогою plotly. На цей раз ми втілимо графік прослуховувань різних реп виконавців за місяць та графік з оцінками деяких альбомів за сайтом AOTY.

    Теми цього довгочиту:

    Програмування
  • Методи lower(), upper(), islower() та isupper() у Python

    Всіх вітаю! У цій невеличкій статті ми познайомимося із одразу чотирма методами для зміни регістру рядків у Python. Конкретно сьогодні ми ознайомимося із методами lower(), upper(), islower() та isupper().

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

  • Stack та Heap

    В JVM використовуються дві структури для зберігання інформації в пам’яті: Stack та Heap. Вони мають полярну філософію і ми не можемо обійтись без жодної із них. У цьому пості я намагатимусь обширно опрацювати причини використання обох структур та їхні особливості.

    Теми цього довгочиту:

    Java
  • Вступ до нейромереж: додавання, віднімання та заплутаність

    Вам кортіло дізнатись, як працюють штучні нейромережі❓ Багато читали про це, але відчуваєте, що ваші знання дуже поверхневі❓ А чи знали ви про “заплутаності” в штучних нейромережах, майже як в квантовій механіці❓ Чи хотіли дізнатись, як взагалі бачить світ нейронка❓

    Теми цього довгочиту:

    Нейромережі
  • Розробка ігор для Atari 2600. Частина 1.

    Цією публікацією хочу розпочати серію статей про программування для ігрової консолі Atari 2600. Atari випустила її у 1977 році, і це одна з перших ігрових систем, побудована на мікропроцесорі та картриджах. В першій статті малюємо на Атарі прапор України

    Теми цього довгочиту:

    Програмування

Коментарі (2)

Цікава обрана тема статті👍

Це також може зацікавити:

  • Stack та Heap

    В JVM використовуються дві структури для зберігання інформації в пам’яті: Stack та Heap. Вони мають полярну філософію і ми не можемо обійтись без жодної із них. У цьому пості я намагатимусь обширно опрацювати причини використання обох структур та їхні особливості.

    Теми цього довгочиту:

    Java
  • Вступ до нейромереж: додавання, віднімання та заплутаність

    Вам кортіло дізнатись, як працюють штучні нейромережі❓ Багато читали про це, але відчуваєте, що ваші знання дуже поверхневі❓ А чи знали ви про “заплутаності” в штучних нейромережах, майже як в квантовій механіці❓ Чи хотіли дізнатись, як взагалі бачить світ нейронка❓

    Теми цього довгочиту:

    Нейромережі
  • Розробка ігор для Atari 2600. Частина 1.

    Цією публікацією хочу розпочати серію статей про программування для ігрової консолі Atari 2600. Atari випустила її у 1977 році, і це одна з перших ігрових систем, побудована на мікропроцесорі та картриджах. В першій статті малюємо на Атарі прапор України

    Теми цього довгочиту:

    Програмування