Quiero reemplazar espacios en blanco con guiones bajos en una cadena para crear URL agradables. Así que por ejemplo:
"This should be connected" becomes "This_should_be_connected"
Estoy usando Python con Django. ¿Se puede resolver esto usando expresiones regulares?
slugify
no da el resultado deseado.Respuestas:
No necesitas expresiones regulares. Python tiene un método de cadena incorporado que hace lo que necesita:
fuente
Reemplazar espacios está bien, pero podría sugerir ir un poco más lejos para manejar otros caracteres hostiles a las URL como signos de interrogación, apóstrofes, signos de exclamación, etc.
También tenga en cuenta que el consenso general entre los expertos de SEO es que los guiones son preferibles a los guiones bajos en las URL.
fuente
Django tiene una función 'slugify' que hace esto, así como otras optimizaciones amigables con URL. Está oculto en el módulo de filtros predeterminados.
Este no es exactamente el resultado que solicitó, pero IMO es mejor para usar en URL.
fuente
Esto tiene en cuenta los caracteres en blanco que no sean el espacio y creo que es más rápido que usar el
re
módulo:fuente
\x8f
. ej. )Usando el
re
módulo:A menos que tenga múltiples espacios u otras posibilidades de espacios en blanco como se mencionó anteriormente, es posible que desee utilizar
string.replace
como otros han sugerido.fuente
use el método de reemplazo de cadenas:
"this should be connected".replace(" ", "_")
"this_should_be_disconnected".replace("_", " ")
fuente
Sorprendentemente, esta biblioteca aún no se menciona
paquete de python llamado python-slugify, que hace un muy buen trabajo de slugify:
Funciona así:
fuente
Estoy usando el siguiente código para mis URL amigables:
Funciona bien con caracteres unicode también.
fuente
Python tiene un método incorporado en cadenas llamado replace que se usa así:
Entonces usarías:
Tuve este problema hace un tiempo y escribí un código para reemplazar los caracteres en una cadena. Tengo que empezar a recordar comprobar la documentación de Python porque tienen funciones integradas para todo.
fuente
OP está usando Python, pero en JavaScript (algo a tener en cuenta ya que las sintaxis son similares.
fuente
si asigna este valor a cualquier variable, funcionará
por defecto mystring no tendrá esto
fuente
Puedes probar esto en su lugar:
fuente
Match et replace space> guión bajo de todos los archivos en el directorio actual
fuente