19Oct

Mostramos cómo truncar textos con etiquetas HTML y mantener la consistencia del Markup

Muchas veces nos hemos encontrado con la situación de tener que recortar una cadena de caracteres a un número prefijado de ellos y mantener la consistencia del Markup HTML…

Muchas veces nos hemos encontrado con la situación de tener que recortar una cadena de caracteres a un número prefijado de ellos y mantener la consistencia del Markup HTML.

Teniendo la siguiente cadena de caracteres de prueba en formato HTML:

<h4>Esta es una prueba con enlace a <a href="https://github.com">Github</a></h4>

Donde queremos mostrar los 20 primeros caracteres. Podemos usar la siguiente función de Python para obtener esos caracteres.

print '<h4>Esta es una prueba con enlace a <a href="https://github.com">Github</a></h4>'[0:20]
# La salida es: <h4>Esta es una prue

Vemos que el Markup HTML queda cortado y la etiqueta h4 queda abierta sin cerrar, y puede causar estragos en nuestra estructura HTML, todas las etiquetas deben estar correctamente cerradas.

Librería eentzel/htmltruncate

La librería eentzel/htmltruncate nos permite realizar esta operación y mantener el Markup HTML.

Descargamos la librería en nuestro ordenador y copiamos el archivo htmltruncate.py a nuestro proyecto Python. Ahora podemos hacer lo siguiente desde nuestro archivo de proyecto:

from htmltruncate import truncate

print truncate('<h4>Esta es una prueba con enlace a <a href="https://github.com">Github</a></h4>', 20, ellipsis='...')
# La salida es: <h4>Esta es una prueba c...</h4>

Vemos también como no tiene en cuenta el Markup HTML para calcular la cadena resultante. Si ejecutamos en nuestra consola Python el siguiente comando veremos que ha cortado la cadena en 20 caracteres y añadido el Markup HTML posterior al cálculo.

>>> print len("Esta es una prueba c")
20

Probamos cortando en número de caracteres la cadena en medio del enlace:

from htmltruncate import truncate

print truncate('<h4>Esta es una prueba con enlace a <a href="https://github.com">Github</a></h4>', 35, ellipsis='...')
# La salida es: <h4>Esta es una prueba con enlace a <a href="https://github.com">Git...</a></h4>

Está respetando el enlace y la dirección del enlace en el cálculo de la cadena resultante.

Ahora sí mantenemos el Markup HTML gracias a esta librería y no hay peligro de dejar etiquetas abiertas que hagan peligrar nuestro HTML.

Librería Python eentzel/htmltruncate: https://github.com/eentzel/htmltruncate.py

Leave a comment