PyTils - простой обработчик русского текста ∞
Вдохновленный getRelativeTime() и RuTils, написал PyTils - обработчик русского текста.
Что умеет pytils:
Числительные
Pytils умеет выбирать правильную форму существительного в зависимости от числа
>>> pytils.numeral.choose_plural(15, (u"гвоздь", u"гвоздя", u"гвоздей"))
u'гвоздей'
В качестве второго параметра передается кортеж с вариантами. Чтобы легко запомнить, в каком порядке указывать варианты, пользуйтесь мнемоническим правилом: один-два-пять - один гвоздь, два гвоздя, пять гвоздей.
Также pytils реализует числа прописью
>>> pytils.numeral.in_words(254)
u'двести пятьдесят четыре'
>>> pytils.numeral.in_words(2.01)
u'две целых одна сотая'
>>> pytils.numeral.rubles(2.01)
u'два рубля одна копейка'
>>> pytils.numeral.sum_string(32, 1, (u"гвоздь", u"гвоздя", u"гвоздей"))
u'тридцать два гвоздя'
>>> pytils.numeral.sum_string(21, 2, (u"белка", u"белки", u"белок"))
u'двадцать одна белка'
Даты
В pytils можно получить русские даты без использования локалей.
>>> pytils.dt.ru_strftime(u"сегодня - %d %B %Y, %A", inflected=True)
u'сегодня - 02 сентября 2006, суббота'
и получить величину периода:
>>> pytils.dt.distance_of_time_in_words(time.time()-10000)
u'2 часа назад'
>>> pytils.dt.distance_of_time_in_words(time.time()+10000, accuracy=2)
u'через 2 часа 46 минут'
Транслитерация
При помощи pytils можно сделать транслитерацию:
>>> print pytils.translit.translify(u"Проверка связи")
'Proverka svyazi'
>>> pytils.translit.detranslify("Proverka svyazi")
u'Проверка связи'
В translify вывод - str, а не unicode. В detranslify вход может быть как unicode, так и str.
И сделать строку для URL (удаляются лишние символы, пробелы заменяются на дефисы):
>>> pytils.translit.slugify(u"тест и еще раз тест")
'test-i-esche-raz-test'
