¿Cómo se trunca una cadena a 75 caracteres en Python?
Así es como se hace en JavaScript:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
len(data) > 77
tener en cuenta los puntos dobles (no tiene sentido truncar solo el último carácter solo para reemplazarlo con un punto).Aún más corto:
fuente
Aún más conciso:
Si tiene menos de 75 caracteres, no habrá cambios.
fuente
Si está utilizando Python 3.4+, puede usarlo
textwrap.shorten
desde la biblioteca estándar:fuente
shorten()
trunca palabras , no caracteres individuales. Busqué pero no parece haber una forma de configurarshorten()
o unaTextWrapper
instancia para recortar caracteres individuales y no palabras.Para una solución Django (que no se ha mencionado en la pregunta):
Eche un vistazo al código fuente de Truncator para apreciar el problema: https://github.com/django/django/blob/master/django/utils/text.py#L66
Con respecto al truncamiento con Django: Django HTML truncation
fuente
Podrías usar este one-liner:
fuente
[:n]
llama para que pueda buscarlo en la documentación?Con regex:
Las cadenas largas se truncan:
Las cadenas más cortas nunca se truncan:
De esta manera, también puede "cortar" la parte media de la cadena, que en algunos casos es más agradable:
fuente
Este método no usa ninguno si:
data[:75] + bool(data[75:]) * '..'
fuente
fuente
75
) en una variable para evitar inconsistencias.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Otra solución más. Con
True
yFalse
obtienes un pequeño comentario sobre la prueba al final.fuente
Esto acaba de entrar:
fuente
fuente
En realidad, no puede "truncar" una cadena de Python como puede hacer una cadena C asignada dinámicamente. Las cadenas en Python son inmutables. Lo que puede hacer es cortar una cadena como se describe en otras respuestas, produciendo una nueva cadena que contiene solo los caracteres definidos por las compensaciones de corte y el paso. En algunos casos (no prácticos) esto puede ser un poco molesto, como cuando elige Python como idioma de la entrevista y el entrevistador le pide que elimine los caracteres duplicados de una cadena en el lugar. Doh
fuente
fuente
No hay necesidad de una expresión regular, pero sí desea utilizar el formato de cadena en lugar de la concatenación de cadena en la respuesta aceptada.
Esta es probablemente la forma más canónica y pitónica de truncar la cadena
data
a 75 caracteres.fuente
saddddddd...
convierte tu cadena111111...
:) Sé que es un error tipográfico copiar y pegar, y estoy de acuerdo contigo sobre las expresiones regulares.Aquí hay una función que hice como parte de una nueva clase de Cadena ... Permite agregar un sufijo (si la cadena es de tamaño después de recortar y agregar es lo suficientemente larga, aunque no es necesario forzar el tamaño absoluto)
Estaba en el proceso de cambiar algunas cosas, por lo que hay algunos costos lógicos inútiles (si _truncate ... por ejemplo) donde ya no es necesario y hay un retorno en la parte superior ...
Pero, sigue siendo una buena función para truncar datos ...
fuente
fuente