https://github.com/seriyps/ru_number_to_text
Преобразует число в текст с учетом plural forms (сумма прописью python). Русский язык.
https://github.com/seriyps/ru_number_to_text
i18n plural-form python
Last synced: 9 months ago
JSON representation
Преобразует число в текст с учетом plural forms (сумма прописью python). Русский язык.
- Host: GitHub
- URL: https://github.com/seriyps/ru_number_to_text
- Owner: seriyps
- License: apache-2.0
- Created: 2011-07-12T20:14:28.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2020-11-29T03:27:42.000Z (over 5 years ago)
- Last Synced: 2025-01-12T22:16:07.663Z (over 1 year ago)
- Topics: i18n, plural-form, python
- Language: Python
- Homepage:
- Size: 14.6 KB
- Stars: 138
- Watchers: 11
- Forks: 57
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Простой 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 ???
* Отрефакторить
* Больше комментариев в коде!