Друкарня від 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() та детально розібрали її код. Сподіваюся, що вам сподобався цей матеріал і ви дізналися щось нове для себе. Дякую за увагу!

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

  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

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

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

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

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

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

    Iphone
  • Як подолати жіночу безплідність за допомогою донорських яйцеклітин

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

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

    Донорство
  • Як заспокоїти зубний біль і чому самолікування може призвести до операції?

    Раптовий біль у зубі може призвести до порушення сну та ускладненого вживання їжі. Люди часто приймають таблетки, роблять полоскання або лікуються народними засобами. В таких випадках не варто відкладати візит до стоматолога, адже можуть з’явитись ускладнення.

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

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

Світ, де код робить чудеса

93Довгочити
1.9KПерегляди
27Підписники
Підтримати
На Друкарні з 14 липня 2025

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

  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

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

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

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

    Програмування
  • Робота з омогліфами у Python

    У цій статті ми розберемо бібліотеку confusables та її функціонал. Також ми розглянемо, що таке омогліфи та як їх використовують.

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

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

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

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

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

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