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

14 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

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages