2011-10-21 3 views
2

基本的に私の質問はthisと同じですが、Python(およびGAE)ではC#ではなく同じです。PYTHONの文字列からSEOに適したダッシュ区切りのURLを作成するにはどうすればよいですか?

要件:

  • 区切りダッシュによって単語とすべての句読点を削除
  • 機能は、最大長を取り込み、以下のすべてのトークンを取得します(すべての単語はスペースで区切られていない考慮に入れます。)その最大長さ。例:ToSeoFriendly( "hello world hello world"、14)は "hello-world"を返します
  • すべての単語は小文字に変換されます。
+0

注:あなたは '言うことはありませんがSEO Friendly'は代わりに 'Search engine Friendly'と答えてください SEOは検索エンジン最適化 – Shedokan

+0

です。それは論理的ですが、今では単語の文字数を倍増しました。 – zakdances

+1

「SE friendly」はどうですか? – Shedokan

答えて

5
def ToSeoFriendly(s, maxlen): 
    '''Join with dashes, eliminate punction, clip to maxlen, lowercase. 

     >>> ToSeoFriendly("The quick. brown4 fox jumped", 14) 
     'the-quick-brow' 

    ''' 
    t = '-'.join(s.split())        # join words with dashes 
    u = ''.join([c for c in t if c.isalnum() or c=='-']) # remove punctation 
    return u[:maxlen].rstrip('-').lower()     # clip to maxlen 

if __name__ == '__main__': 
    import doctest 
    print doctest.testmod() 
3

あなたが探している用語は 'slugify' です。代替(そしておそらくよりテストバージョン)として

2

私はあなたがジャンゴから(最小限の変更)slugifyコードを使用示唆しています:

import unicodedata 
import re 

def slugify(value): 
    """ 
    Normalizes string, converts to lowercase, removes non-alpha characters, 
    and converts spaces to hyphens. 
    """ 
    value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii') 
    value = re.sub('[^\w\s-]', '', value).strip().lower() 
    return re.sub('[-\s]+', '-', value) 

参照:https://github.com/django/django/blob/master/django/utils/text.py#L435

関連する問題