Je veux remplacer les espaces par un trait de soulignement dans une chaîne pour créer de belles URL. Pour que par exemple:
"This should be connected" becomes "This_should_be_connected"
J'utilise Python avec Django. Cela peut-il être résolu en utilisant des expressions régulières?
slugify
ne donne pas la sortie souhaitée.Réponses:
Vous n'avez pas besoin d'expressions régulières. Python a une méthode de chaîne intégrée qui fait ce dont vous avez besoin:
la source
Remplacer les espaces est bien, mais je pourrais suggérer d'aller un peu plus loin pour gérer d'autres caractères hostiles aux URL comme les points d'interrogation, les apostrophes, les points d'exclamation, etc.
Notez également que le consensus général parmi les experts SEO est que les tirets sont préférés aux soulignés dans les URL.
la source
Django a une fonction 'slugify' qui fait cela, ainsi que d'autres optimisations compatibles avec les URL. Il est caché dans le module defaultfilters.
Ce n'est pas exactement le résultat que vous avez demandé, mais IMO, il est préférable de l'utiliser dans les URL.
la source
Cela prend en compte les caractères vides autres que l'espace et je pense que c'est plus rapide que d'utiliser le
re
module:la source
\x8f
)Utilisation du
re
module:À moins que vous n'ayez plusieurs espaces ou d'autres possibilités d'espaces comme ci-dessus, vous pouvez simplement utiliser
string.replace
comme d'autres l'ont suggéré.la source
utilisez la méthode de remplacement de chaîne:
"this should be connected".replace(" ", "_")
"this_should_be_disconnected".replace("_", " ")
la source
Étonnamment, cette bibliothèque n'est pas encore mentionnée
package python nommé python-slugify, qui fait un très bon travail de slugification:
Fonctionne comme ceci:
la source
J'utilise le code suivant pour mes URL conviviales:
Cela fonctionne aussi bien avec les caractères Unicode.
la source
Python a une méthode intégrée sur les chaînes appelée replace qui est utilisée comme suit:
Vous utiliseriez donc:
J'ai eu ce problème il y a quelque temps et j'ai écrit du code pour remplacer les caractères d'une chaîne. Je dois commencer à me rappeler de vérifier la documentation de python car ils ont des fonctions intégrées pour tout.
la source
OP utilise python, mais en javascript (quelque chose à faire attention car les syntaxes sont similaires.
la source
si vous attribuez cette valeur à une variable, cela fonctionnera
par défaut mystring n'aura pas cette
la source
Vous pouvez essayer ceci à la place:
la source
Match and replace space> soulignement de tous les fichiers du répertoire courant
la source