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

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

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

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

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

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

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

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

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

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

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

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

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

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader

Нічний читач

312Прочитань
17Автори
9Читачі
На Друкарні з 14 липня

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

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

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

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

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