2012-01-27 8 views
1

私はPythonを初めて使い、Ruby Stringex libraryと同様の機能を持つslug/urlパラメータライブラリを探しています。たとえば:Pythonのアドバンスslug/urlパラメータ化(字形を含む)ライブラリ

# 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" 

私は、これは結果が近くにありませんでしたhowever-んと主張しwebhelpers.text.urlify、渡って来ています。どんな助けでも大歓迎です。

答えて

2

Django's own slugify template filterに基づいているが、NFKD normalizationを基準にして、チェックslugifyをチェックする。ここでは、関連するコードがあります:

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

それはRubyのStringexほど強力ではないのですが、あなたは簡単にUnidecodeを見て、Text::UnidecodeのPerlモジュールのPythonのポートを取るなど、それらのアンパサンドを拡大するためにドル記号を、それを拡張することができこれは、StringexがUnicodeの文字変換に使用するものと同じものです。

+0

ありがとうChewie! –

+0

私はこのコードがstringexがするものよりも** way **劣っていると思います。それは音訳をしません。 'mop 'は' moop'の代わりに 'mop'に変わります。 – ThiefMaster

関連する問題