HOWTO · Python
Repetir cadena N veces en Python
Aprenda a repetir una cadena un número fijo de veces en Python y a construir una cadena hasta una longitud de caracteres especificada.
En esta página
En Python, multiplica una cadena por un entero para repetirla completa un número fijo de veces. Para obtener una cadena de hasta una longitud determinada de caracteres, repítela las veces necesarias y corta el resultado. Estos métodos resuelven necesidades distintas: el primero conserva cada copia completa, mientras que el segundo puede terminar a mitad de una copia.
Repetir una cadena N veces con el operador * en Python
Usa el operador * cuando sepas cuántas copias completas necesitas. El resultado es una cadena nueva que contiene el texto original repetido en secuencia. Aquí tienes un ejemplo sencillo:
print("ha" * 3)
hahaha
El resultado es hahaha. Multiplicar por 0 produce una cadena vacía. Un número negativo de repeticiones también produce una cadena vacía; si tu aplicación debe rechazar ese valor, valida el número antes de multiplicar. El número de repeticiones debe ser un entero.
Si necesitas un separador entre las copias, llama a join() sobre una secuencia repetida. Por ejemplo, ", ".join(["ha"] * 3) coloca una coma y un espacio entre las copias, y produce ha, ha, ha. El separador va entre los elementos; el operador * por sí solo simplemente coloca las copias una junto a otra. Para la tarea habitual de repetir una cadena un número fijo de veces, la multiplicación de cadenas es la opción más clara.
Repetir una cadena hasta una longitud determinada en Python
Al repetir una cadena hasta una longitud determinada, el resultado puede terminar con solo una parte de la última copia. Repite la cadena de origen las veces necesarias y luego corta el resultado hasta alcanzar el número de caracteres solicitado. Esta función auxiliar rechaza una longitud negativa e indica que no se puede obtener una longitud positiva a partir de una cadena de origen vacía:
def repeat_to_length(text, target_length):
if target_length < 0:
raise ValueError("target_length must be nonnegative")
if not text and target_length > 0:
raise ValueError("text must not be empty for a positive target length")
if target_length == 0:
return ""
copies = (target_length + len(text) - 1) // len(text)
return (text * copies)[:target_length]
result = repeat_to_length("abc", 8)
print(result)
abcabcab
Con las entradas del ejemplo, el resultado es abcabcab: dos copias completas y los dos primeros caracteres de la siguiente. La expresión de división con redondeo hacia arriba calcula cuántas copias hacen falta, y el corte aplica la longitud exacta solicitada.
Una longitud objetivo de 0 devuelve una cadena vacía. Una cadena de origen vacía solo puede producir una longitud objetivo de 0; para un objetivo positivo, la función auxiliar genera ValueError. También genera ValueError si el objetivo es negativo, para evitar que quien la llame reciba silenciosamente un resultado engañoso. Si tu aplicación necesita otra política, ajusta esas comprobaciones antes de usar la función.