Quero substituir o espaço em branco pelo sublinhado em uma string para criar URLs agradáveis. Então, por exemplo:
"This should be connected" becomes "This_should_be_connected"
Eu estou usando Python com Django. Isso pode ser resolvido usando expressões regulares?
slugify
não fornece a saída desejada.Respostas:
Você não precisa de expressões regulares. O Python possui um método de string interno que faz o que você precisa:
fonte
Substituir espaços é bom, mas eu sugiro ir um pouco mais além para lidar com outros caracteres hostis à URL, como pontos de interrogação, apóstrofes, pontos de exclamação etc.
Observe também que o consenso geral entre os especialistas em SEO é que os traços são preferidos aos sublinhados nos URLs.
fonte
O Django tem uma função 'slugify' que faz isso, assim como outras otimizações amigáveis à URL. Está escondido no módulo defaultfilters.
Esta não é exatamente a saída solicitada, mas o IMO é melhor para uso em URLs.
fonte
Isso leva em conta caracteres em branco que não sejam espaço e acho que é mais rápido do que usar o
re
módulo:fonte
\x8f
)Usando o
re
módulo:A menos que você tenha vários espaços ou outras possibilidades de espaços em branco, como acima, você pode apenas usar
string.replace
como outros sugeriram.fonte
use o método de substituição da string:
"this should be connected".replace(" ", "_")
"this_should_be_disconnected".replace("_", " ")
fonte
Surpreendentemente, essa biblioteca ainda não mencionada
pacote python chamado python-slugify, que faz um bom trabalho slugifying:
Funciona assim:
fonte
Estou usando o seguinte trecho de código para meus URLs amigáveis:
Também funciona bem com caracteres unicode.
fonte
O Python possui um método interno em strings chamado replace, que é usado da seguinte maneira:
Então você usaria:
Eu tive esse problema há algum tempo e escrevi código para substituir caracteres em uma string. Preciso começar a me lembrar de verificar a documentação do python, porque eles têm funções incorporadas para tudo.
fonte
O OP está usando python, mas em javascript (algo para ter cuidado, pois as sintaxes são semelhantes.
fonte
se você atribuir esse valor a qualquer variável, ele funcionará
por padrão mystring não terá isso
fonte
Você pode tentar isso:
fonte
Corresponder e substituir espaço> sublinhado de todos os arquivos no diretório atual
fonte