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

Як перетворити числа зі словесної форми у числову за допомогою numerizer?

У сьогоднішній статті предметом нашого огляду буде невеличка бібліотека під назвою numerizer, яка дозволяє перетворювати числа зі словесної у числову форму.

Встановлення

Windows:

pip install numerizer

MacOS:

pip3 install numerizer

Linux:

pip install numerizer

Використання

Отже, бібліотека numerizer має функцію numerize(). Саме функція numerize() і перетворює числа зі словесної форми у числову.

Тож, імпортуємо бібліотеку та дивимося на приклад:

import numerizer

text = "Twenty-four"
print(numerizer.numerize(text))
24

Тобто ми передали функції numerize() рядок “Twenty four“ (“Двадцять чотири“) та отримали результат у вигляді цілого числа. Але якщо ми спробуємо визначити, який тип даних має наш результат — результат буде str, тобто результат залишається рядком. Перевіримо це на практиці:

text = "Twenty-four"
numerize_text = numerizer.numerize(text)

print(type(numerize_text))
<class 'str'>

Тобто функція numerize() не змінює тип даних.

Тепер чудово було б навести ще приклади використання даної функції:

Приклад 2:

text = "Five hundred and forty three"
numerize_text = numerizer.numerize(text)

print(numerize_text)
543

Приклад 3:

text = "Twenty-one million forty-two thousand seven hundred and sixty-three"
numerize_text = numerizer.numerize(text)

print(numerize_text)
21042763

Приклад 4:

text = "Seven and two quarters"
numerize_text = numerizer.numerize(text)

print(numerize_text)
7.5

Важливий факт: numerize() не розпізнає роздільник point для виведення десятих. Тобто коли ми, наприклад, захочемо перетворити рядок “Seven point thirty“ на 7.30, то ми не зможемо цього зробити. Ось приклад такого намаганняя у коді:

text = "Seven point thirty"
numerize_text = numerizer.numerize(text)

print(numerize_text)
7 point 30

Вдосконалення функції numerizer()

Тепер пропоную дещо усунути проблему із роздільником point. Отже, зробимо оновлену функцію, яка б мала всі ті ж функції, що й numerize(), але підтримувала роздільник point. Тож, спочатку конкретезуємо, які дії нам треба виконати у коді, щоб отримати підтримку роздільника point.

По-перше, нам треба замінити слово point на крапку. З цим завданням ми можемо впоратися за допомогою методу replace(), який якраз таки і заміняє потрібну нам частину рядка на вказаний нами символ.

По-друге, прибрати зайві пробіли між числами. Це можна зробити за допомогою того, що ми перетворимо рядок, який ми отримаємо у якості параметра у список. Таким чином ми просто зможемо видалити порожні елементи з новоствореного списка та повернути результат назад до рядкового типу даних.

Тож, тепер дещо модифікуємо функцію numerize(), а саме створюємо нову функцію — modificated_numerize().

Ось код нашої функції:

text = "Seven point thirty"


def modificated_numerize(text):
    totally_modified = None

    numerize_text = numerizer.numerize(text)
    replaced_point = numerize_text.replace("point", ".")
    listed_text = list(replaced_point)

    for i in listed_text:
        if i == " ":
            space_index = listed_text.index(i)
            listed_text.pop(space_index)

        elif " " not in listed_text:
            totally_modified = "".join(listed_text)

    return totally_modified


print(modificated_numerize(text))
7.30

І у підсумку отримали 7.30 як бажаний результат. Тепер пропоную розібрати цей код з поясненнями як він працює.

Розбір коду:

Перший етап. Визначаємо функцію та створюємо для неї параметр text, щоб ми потім могли вказати наш рядок у якості параметра.

Другий етап. Визначаємо змінну totally_modified, яка у майбутньому буде зберігати наш кінцевий результат, а зараз вона просто зберігає порожній рядок.

Третій етап. Використовуємо функцію numerize(), щоб перетворити словесний формат чисел у числовий. Результат роботи функції зберігаємо у змінній numerize_text. Тобто, якщо зараз абстрагуватися від всього іншого коду і залишити тільки numerize(), то ми отримаємо результат 7 point 30.

Четвертий етап. Визначаємо змінну replaced_point та зберігаємо туди наш попередній результат тільки з крапкою замість слова point. Тобто ми отримали “7 . 30” у результаті. Ми досягли цього за допомогою методу replace(), який отримав слово, яке треба замінити, та символ, на який ми хочемо замінити слово. У нашому випадку нам треба замінити слово point на крапку, звідси і такий запис replace(“point“, “.“).

П’ятий етап. Перетворюємо рядок на список. У такому разі кожен символ у рядку буде окремим елементом списку і пусті рядки також.

Шостий етап. Тут ми створюємо цикл for у якому проходимося по кожному елементу нещодавно створеного списку listed_text. Цей цикл має у собі дві умови if i == " " та if " " not in listed_text. Перша умова перевіряє кожен елемент на те, чи є він порожнім рядком, якщо так, то ми знаходимо індекс цього елемента у списку і видаляємо його зі списку за допомогою методу pop(). Якщо ж у списку більше немає жодного елемента, який був би порожнім рядком, то ми просто приєднуємо список до рядка і зберігаємо його у змінній totally_modified. Варто зазначити одну важливу річ, приєднуючи список до рядка ми тим самим ніби конвертуємо список у рядок. Тобто на виході ми отримаємо результат типу str.

Сьомий етап. Повертаємо змінну totally_modified.

Висновок

У цій статті ми познайомилися з бібліотекою numerizer, ознайомилися з функцією numerize(), створили на її основі власну вдосконалену функцію modificated_numerize() та детально розібрали її код. Сподіваюся, що вам сподобався цей матеріал і ви дізналися щось нове для себе. Дякую за увагу!

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

  • Як обрати конструктор сайтів для товарного бізнесу

    Дізнайтесь, як обрати конструктор сайтів для товарного бізнесу. Практичні поради: готові шаблони, модульність, інтеграції, аналітика, безкоштовний тариф та масштабування для ефективного запуску та контролю заявок.

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

    Конструктор Сайтів
  • Як модні бренди формують культуру та впливають на глобальні fashion-тренди

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

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

    Мода
  • Створити блог на Друкарні - швидко, легко та безкоштовно

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

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

    Друкарня
  • Чому Google Merchant Center може заблокувати обліковий запис?

    Одним з найбільш ефективних каналів продажів є система Google Merchant Center. Правда, акаунт в ній може бути несподівано заблокований, якщо при його налаштуванні були порушені правила системи. У статті розглянемо підводні камені і дамо відповідь як уникнути блокування

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

    Google Merchant Center
  • Бухгалтерський супровід ФОП: сучасний підхід до обліку

    Завдяки розвитку інформаційних технологій, впровадженню сучасних рішень і сервісів процес ведення бухобліку бізнесу став значно простішим і зручним. З іншого боку, ті ж технології додали бухгалтерам роботи – з обліком онлайн-продажів і надходжень у валюті, CRM-системами та ін.

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

    Бухгалтерський Облік Фоп
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader we.ua/nocturnal_reader

Нічний читач

49Довгочити
541Прочитання
15Підписники
Підтримати
На Друкарні з 14 липня

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

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

  • Реплікація у Kafka

    Пост про реплікацію в Kafka. Асинхронна і синхронна реплікація. ISR/OSR. Смерть лідера. Відновлення реплік. Конфігурація продюсера на очікування реплікації.

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

    Kafka
  • 50 онлайн книг для вивчення Java

    Ви готові розпочати подорож до володіння Java? Тоді увага – ми створили підбірку з 50 видатних онлайн-книг англійською, які допоможуть вам освоїти кожний аспект програмування на Java!

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

    Java
  • Скорочення робочих місць у сфері технологій у 2023 році

    Зіткнувшись з нестабільною глобальною економікою та уповільненням зростання доходів, технологічні компанії прискорили темпи звільнень у 2023 році, причому загальне скорочення персоналу зараз перевищує всі втрати робочих місць у технологічних компаніях за минулий рік.

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

    Бізнес

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

Підтримайте автора першим.
Напишіть коментар!

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

  • Реплікація у Kafka

    Пост про реплікацію в Kafka. Асинхронна і синхронна реплікація. ISR/OSR. Смерть лідера. Відновлення реплік. Конфігурація продюсера на очікування реплікації.

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

    Kafka
  • 50 онлайн книг для вивчення Java

    Ви готові розпочати подорож до володіння Java? Тоді увага – ми створили підбірку з 50 видатних онлайн-книг англійською, які допоможуть вам освоїти кожний аспект програмування на Java!

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

    Java
  • Скорочення робочих місць у сфері технологій у 2023 році

    Зіткнувшись з нестабільною глобальною економікою та уповільненням зростання доходів, технологічні компанії прискорили темпи звільнень у 2023 році, причому загальне скорочення персоналу зараз перевищує всі втрати робочих місць у технологічних компаніях за минулий рік.

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

    Бізнес