Расширенная библиотека параметризации slug / url (включая транслитерацию) в Python - PullRequest
1 голос
/ 27 января 2012

Я новичок в Python и ищу библиотеку параметризации slug / url, которая предлагает функцию, аналогичную функции библиотеки Ruby Stringex .Например:

# A simple prelude
"simple English".to_url => "simple-english"
"it's nothing at all".to_url => "its-nothing-at-all"
"rock & roll".to_url => "rock-and-roll"

# Let's show off
"$12 worth of Ruby power".to_url => "12-dollars-worth-of-ruby-power"
"10% off if you act now".to_url => "10-percent-off-if-you-act-now"

# You don't even wanna trust Iconv for this next part
"kick it en Français".to_url => "kick-it-en-francais"
"rock it Español style".to_url => "rock-it-espanol-style"
"tell your readers 你好".to_url => "tell-your-readers-ni-hao"

Я наткнулся на webhelpers.text.urlify, который утверждает, что делает это, однако, результаты не были близки.Любая помощь очень ценится.

1 Ответ

2 голосов
/ 27 января 2012

Check slugify , основанный на собственного шаблона шаблонов slugify Django , но с нормализацией NFKD .Вот соответствующий код:

re.sub(r'[-\s]+', '-',
            unicode(
                re.sub(r'[^\w\s-]', '',
                    unicodedata.normalize('NFKD', string)
                    .encode('ascii', 'ignore'))
                .strip()
                .lower()))

Он не такой мощный, как Stringex Руби, но вы можете легко расширить его, чтобы расширить эти амперсанды, символы доллара и т. Д. Посмотрите на Unidecode порт Python Text::Unidecode модуля Perl, то же самое, что Stringex использует для транслитерации Unicode.

...