¿Cómo concatenar cadenas en Python?
Respuesta corta: usa el operador + para unir dos o tres cadenas, una f-string cuando mezclas texto con variables o números, y join() cuando tienes una lista de cadenas:
nombre = "Ana"
edad = 30
print("Hola, " + nombre) # Hola, Ana
print(f"{nombre} tiene {edad} años") # Ana tiene 30 años
print(" ".join(["Aprende", "Python"])) # Aprende PythonCon + solo puedes unir textos: para añadir un número, conviértelo con str() o usa una f-string.
El operador + solo une textos. Las f-strings convierten los números solas y join() une listas enteras con el separador que elijas.
Formas de concatenar cadenas en Python
| Método | Ejemplo | Úsalo para |
|---|---|---|
+ | "Hola, " + nombre | Unir pocas cadenas |
+= | texto += "!" | Añadir texto a una variable |
| f-string | f"{nombre} tiene {edad} años" | Mezclar texto, variables y números |
join() | " ".join(palabras) | Unir una lista con un separador |
format() | "{} tiene {} años".format(nombre, edad) | Código antiguo o plantillas reutilizables |
% | "%s tiene %d años" % (nombre, edad) | Leer código muy antiguo |
* | "-" * 20 | Repetir una cadena |
Concatenar con el operador +
nombre = "Alex"
print("Me llamo " + nombre + " y soy desarrollador")
# Me llamo Alex y soy desarrollador+ no añade espacios. Si olvidas el espacio después de llamo, el resultado es Me llamoAlex.
Añadir texto con +=
saludo = "Hola"
saludo += ", mundo"
print(saludo) # Hola, mundoLas cadenas de Python no se pueden modificar: += crea una cadena nueva y la guarda en la misma variable.
Concatenar con f-strings
Escribe una f antes de las comillas y pon las variables entre llaves. Dentro de las llaves también puedes hacer cálculos y dar formato:
producto = "Teclado"
precio = 20
print(f"{producto}: {precio * 1.21:.2f} € con IVA")
# Teclado: 24.20 € con IVALas f-strings convierten los números en texto solas y son la opción más legible en el Python actual.
Unir una lista con join()
palabras = ["Aprende", "a", "programar"]
print(" ".join(palabras)) # Aprende a programar
print("-".join(palabras)) # Aprende-a-programar
print("\n".join(palabras)) # una palabra por líneaLa cadena que va antes de .join() es el separador. join() solo acepta textos: si la lista tiene números, conviértelos antes con map(str, lista):
print(", ".join(map(str, [1, 2, 3]))) # 1, 2, 3Concatenar números y texto
edad = 30
print("Tienes " + str(edad) + " años") # Tienes 30 años
print(f"Tienes {edad} años") # Tienes 30 añosSin str(), "Tienes " + edad da TypeError: can only concatenate str (not "int") to str.
format(), % y *
nombre = "Ana"
edad = 30
print("{} tiene {} años".format(nombre, edad)) # Ana tiene 30 años
print("%s tiene %d años" % (nombre, edad)) # Ana tiene 30 años
print("ja" * 3) # jajajaformat() y % siguen funcionando, pero en código nuevo una f-string se lee mejor. * repite una cadena tantas veces como indiques.
