Python 如何将字符串转换为seo url?

Python 如何将字符串转换为seo url?,python,string,url,unicode,seo,Python,String,Url,Unicode,Seo,我想将重音字符串转换为seo url 例如: “Le bébé(de 4 ans)aégalement unétrange”rire“至: “le-bebe-de-4-ans-a-EgaElement-un-etrange-rire” 有什么解决办法吗 谢谢 这就是我使用的: def _doStringSEOptiomization(objectName,pageName,lang,objectId): """ Prende in input il nome di un'offerta e sv

我想将重音字符串转换为seo url

例如: “Le bébé(de 4 ans)aégalement unétrange”rire“至: “le-bebe-de-4-ans-a-EgaElement-un-etrange-rire”

有什么解决办法吗

谢谢

这就是我使用的:

def _doStringSEOptiomization(objectName,pageName,lang,objectId):
"""
Prende in input il nome di un'offerta e svolge dei passi:
1- Trasforma tutte le variazioni delle vocali
   in vocali normali
2- Attraverso una serie di REGEX, elimina i caratteri non desiderati e torna 
   una stringa da inserire in un link adatto ai motori di ricerca e alle indicizzazioni
"""

try:
    import re #importo il modulo per le REGEX
    Speaker.log_debug(GREEN("core.ws_site.do_sites_offers_data_redux._doStringSEOptiomization() input: objectName=%s, pageName=%s, lang=%s, objectId=%s" % (objectName,pageName,lang,objectId)))

    #mappa dei caratteri html-entity e unicode
    vocalMap = { 'a' : ['à','á','â','ã','ä','å','æ','à','á','â','ã','ä','å','ā','æ'],
                 'e' : ['è','é','ê','ë','è','é','ê','ë','ē'],
                 'i' : ['ì','í','î','ï','ì','í','î','ï','ī'],
                 'o' : ['ò','ó','ô','œ','õ','ö','ò','ó','ô','œ','õ','ö','ō'],
                 'u' : ['ù','ú','û','ü','ù','ú','û','ü','ū']
                }

    objectName = objectName.lower() #trasformo la stringa di partenza in caratteri minuscoli

    for vocale, lista in vocalMap.iteritems(): #per ogni elemento della mappa avrà una chiave ed una lista
        for elemento in lista: #itero su tutti gli elementi della lista
            objectName = objectName.replace(elemento,vocale) #sostituisco nel nome dell'offerta, la vocale all' HTML-entity

    objectName = objectName.replace("/","-")

    objectName = re.sub("[^a-z0-9_\s-]","",objectName)     #######################################
    objectName = re.sub("[\s-]+"," ",objectName)           #strippo tutti i caratteri non voluti:# 
    objectName = re.sub("[\s_]","-",objectName)            #######################################

    objectName = pageName+"--"+objectName
    objectName += "-"+lang+"-"+str(objectId) #aggiungo la lingua e l'id dell'offerta

except Exception,s:
    Speaker.log_error("_doStringSEOptiomization(): Error=%s"%RED(s))

return objectName 
你必须根据自己的情况调整它。

这就是我使用的:

def _doStringSEOptiomization(objectName,pageName,lang,objectId):
"""
Prende in input il nome di un'offerta e svolge dei passi:
1- Trasforma tutte le variazioni delle vocali
   in vocali normali
2- Attraverso una serie di REGEX, elimina i caratteri non desiderati e torna 
   una stringa da inserire in un link adatto ai motori di ricerca e alle indicizzazioni
"""

try:
    import re #importo il modulo per le REGEX
    Speaker.log_debug(GREEN("core.ws_site.do_sites_offers_data_redux._doStringSEOptiomization() input: objectName=%s, pageName=%s, lang=%s, objectId=%s" % (objectName,pageName,lang,objectId)))

    #mappa dei caratteri html-entity e unicode
    vocalMap = { 'a' : ['à','á','â','ã','ä','å','æ','à','á','â','ã','ä','å','ā','æ'],
                 'e' : ['è','é','ê','ë','è','é','ê','ë','ē'],
                 'i' : ['ì','í','î','ï','ì','í','î','ï','ī'],
                 'o' : ['ò','ó','ô','œ','õ','ö','ò','ó','ô','œ','õ','ö','ō'],
                 'u' : ['ù','ú','û','ü','ù','ú','û','ü','ū']
                }

    objectName = objectName.lower() #trasformo la stringa di partenza in caratteri minuscoli

    for vocale, lista in vocalMap.iteritems(): #per ogni elemento della mappa avrà una chiave ed una lista
        for elemento in lista: #itero su tutti gli elementi della lista
            objectName = objectName.replace(elemento,vocale) #sostituisco nel nome dell'offerta, la vocale all' HTML-entity

    objectName = objectName.replace("/","-")

    objectName = re.sub("[^a-z0-9_\s-]","",objectName)     #######################################
    objectName = re.sub("[\s-]+"," ",objectName)           #strippo tutti i caratteri non voluti:# 
    objectName = re.sub("[\s_]","-",objectName)            #######################################

    objectName = pageName+"--"+objectName
    objectName += "-"+lang+"-"+str(objectId) #aggiungo la lingua e l'id dell'offerta

except Exception,s:
    Speaker.log_error("_doStringSEOptiomization(): Error=%s"%RED(s))

return objectName 
您必须根据您的情况调整它。

这可能(也可能不)足够:

import re
import unidecode

def normalized_id(title):
    title = unidecode.unidecode(title).lower()
    return re.sub('\W+', '-', title.replace("'", '')).strip('-')
这可能(也可能不够):

import re
import unidecode

def normalized_id(title):
    title = unidecode.unidecode(title).lower()
    return re.sub('\W+', '-', title.replace("'", '')).strip('-')

如果有Django,您可以使用它的defaultfilter Slagify(或根据您的需要调整)。

如果有Django,您可以使用它的defaultfilter Slagify(或根据您的需要调整)

多亏了django内置过滤器的强大功能,它不会像@doncallisto发布的解决方案那样用e替换é


多亏了django强大的内置过滤器,它不会像@doncallisto发布的解决方案那样用e替换é。以下是几种方法:Armin Ronacher。

以下是几种方法:Armin Ronacher

>>> a = u'Le bébé (de 4 ans) a également un étrange "rire"'
>>> r = unicodedata.normalize('NFKD',a).encode('cp1256','ignore')
>>> r = unicode(re.sub('[^\w\s-]','',r).strip().lower())
>>> r = re.sub('[-\s]+','-',r)
>>> print r
le-bebe-de-4-ans-a-egalement-un-etrange-rire
我使用cp1256(拉丁语1)来处理重音字符

太好了!非常感谢

我使用cp1256(拉丁语1)来处理重音字符

太好了!非常感谢