• Stars
    star
    137
  • Rank 266,121 (Top 6 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 13 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

Простой 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 ???
  • Отрефакторить
  • Больше комментариев в коде!