Skip to content

Преобразует число в текст с учетом plural forms (сумма прописью python). Русский язык.

License

Notifications You must be signed in to change notification settings

seriyps/ru_number_to_text

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Простой python модуль для генерации названия числа.

Позволяет получить из числа, например, 100500 его "название" (генерация текста из числа, преобразование числа в текст), например "сто пятьсот". Позволяет так же использовать наименование единиц измерения например 100500 (рублей, рубля, рубль) > "сто пятьсот рублей"

Примеры использования

Генерация названия int числа

>>> from number_to_text import num2text
>>> print num2text(100500)
u"сто пятьсот"
>>> print num2text(1234567891)
u'один миллиард двести тридцать четыре миллиона пятьсот шестьдесят семь тысяч восемьсот девяносто один'

Генерация названия int числа с единицами измерения

>>> from number_to_text import num2text
>>> male_units = ((u'рубль', u'рубля', u'рублей'), 'm')
>>> female_units = ((u'копейка', u'копейки', u'копеек'), 'f')
>>> # male_units это plural-формы для единицы измерения и ее род 'm' - мужской, 'f' - женский
>>> num2text(101, male_units)  # первая plural форма, мужской род
u'сто один рубль'
>>> num2text(102, male_units)  # вторая plural форма, мужской род
u'сто два рубля'
>>> num2text(101, female_units)  # первая plural форма, женский род
u'сто одна копейка'
>>> num2text(102, female_units)  # вторая plural форма, женский род
u'сто две копейки'
>>> num2text(105, female_units)  # третья plural форма, женский род
u'сто пять копеек'

Генерация названия дробного числа

>>> from number_to_text import decimal2text
>>> import Decimal
>>> int_units = ((u'рубль', u'рубля', u'рублей'), 'm')
>>> exp_units = ((u'копейка', u'копейки', u'копеек'), 'f')
>>> decimal2text(
        decimal.Decimal('105.245'),
        int_units=int_units,
        exp_units=exp_units)
u'сто пять рублей двадцать четыре копейки'
>>> decimal2text( # можно задать число цифр после запятой (округление)
        decimal.Decimal('102.2450'),
        places=4,
        int_units=int_units,
        exp_units=exp_units)
u'сто два рубля две тысячи четыреста пятьдесят копеек' xD 

Еще больше примеров можно найти в юнит-тестах.

TODO

  • Добавить setup.py
  • Нучиться возвращать не строку а что-то более удобное для дальнейшей обработки.
  • Отделить юнит-тесты в отдельный модуль
  • Добваить в PyPi ???
  • Отрефакторить
  • Больше комментариев в коде!

About

Преобразует число в текст с учетом plural forms (сумма прописью python). Русский язык.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages