pytils - простой обработчик русского текста, реализован на Python. Идея позаимствована у Юлика Тарханова и его RuTils.
pytils умеет выбирать правильный падеж в зависимости от числа
>>> pytils.numeral.choose_plural(15, (u"гвоздь", u"гвоздя", u"гвоздей"))
u'гвоздей'
В качестве второго параметра передается кортеж с вариантами (либо строка, где варианты перечисляются через запятую). Чтобы легко запомнить, в каком порядке указывать варианты, пользуйтесь мнемоническим правилом: один-два-пять - один гвоздь, два гвоздя, пять гвоздей.
Часто нужен не просто вариант, а число вместе с текстом
>>> pytils.numeral.get_plural(15, u"гвоздь, гвоздя, гвоздей")
u'15 гвоздей'
В get_plural можно еще передать вариант, когда число -- ноль. Т.е. чтобы было не '0 гвоздей', а 'гвоздей нет':
>>> pytils.numeral.get_plural(0, u"гвоздь, гвоздя, гвоздей")
u'0 гвоздей'
>>> pytils.numeral.get_plural(0, u"гвоздь, гвоздя, гвоздей", absence=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, pytils.numeral.MALE, (u"гвоздь", u"гвоздя", u"гвоздей"))
u'тридцать два гвоздя'
>>> pytils.numeral.sum_string(21, pytils.numeral.FEMALE, u"белка, белки, белок")
u'двадцать одна белка'
В pytils можно получить русские даты без использования локалей.
>>> pytils.dt.ru_strftime(u"сегодня - %d %B %Y, %A", inflected=True, date=datetime.date(2006, 9, 2))
u'сегодня - 2 сентября 2006, суббота'
>>> pytils.dt.ru_strftime(u"сделано %A, %d %B %Y", inflected=True, preposition=True)
u'сделано во вторник, 10 июля 2007'
Есть возможность получить величину периода:
>>> pytils.dt.distance_of_time_in_words(time.time()-10000)
u'2 часа назад'
>>> pytils.dt.distance_of_time_in_words(datetime.datetime.now()+datetime.timedelta(0,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'
pytils поддерживает современные веб-фреймворки (Django, TurboGears, Pylons) и легко интегрируется с шаблонами, используемыми в них (Django templates, Kid, Cheetah, Myghty, Mako). В документации к pytils приведены рабочие проекты-примеры для Django и TurboGears/Kid.