Las strings en Python representan texto. Nombres, mensajes, rutas, URLs, descripciones, comandos y datos escritos por usuarios suelen almacenarse como cadenas.
Python facilita el trabajo básico con texto, pero también ofrece herramientas para slicing, búsqueda, reemplazo, validación, formato, Unicode y codificación. Esta guía reúne los patrones más útiles para programas reales.
Crear cadenas
Utiliza comillas simples o dobles:
first_name = "Olivia"
message = 'Python es legible'Las comillas triples permiten varias líneas:
description = """Este producto incluye:
- un teclado
- un ratón
- una funda"""Elige un estilo consistente. Las comillas dobles resultan cómodas cuando el texto contiene apóstrofos; las simples evitan escapar algunas comillas internas.
Las strings son secuencias
Cada carácter tiene una posición que comienza en cero:
language = "Python"
print(language[0])
print(language[1])
print(language[-1])Los índices negativos cuentan desde el final. Una posición inexistente genera IndexError.
La documentación oficial del tipo str describe el comportamiento de las secuencias de texto.
Slicing de strings
La sintaxis [inicio:fin:paso] extrae una parte:
text = "Programación"
print(text[0:7])
print(text[7:])
print(text[:4])
print(text[::2])
print(text[::-1])La posición final queda excluida. El slicing también funciona con listas y tuplas. Consulta la guía de slicing en Python.
Inmutabilidad
No puedes reemplazar un carácter directamente:
word = "cat"
# word[0] = "b" # TypeErrorDebes construir una cadena nueva:
word = "b" + word[1:]
print(word)Los métodos de string también devuelven valores nuevos. Asigna el resultado si deseas conservarlo.
Cambiar mayúsculas y minúsculas
name = " aLEX JOHNSON "
print(name.lower())
print(name.upper())
print(name.title())
print(name.capitalize())
print(name.strip())Para comparaciones sin distinguir mayúsculas, casefold() es más completo que lower() en Unicode:
answer = input("¿Continuar? ").strip().casefold()
if answer in {"sí", "si"}:
print("Continuando")La guía de input() en Python explica cómo normalizar y validar texto recibido.
Buscar dentro de una cadena
El operador in comprueba la existencia de una subcadena:
email = "[email protected]"
print("@" in email)
print("admin" not in email)find() devuelve la primera posición o -1:
sentence = "Python facilita la automatización"
position = sentence.find("automatización")
print(position)index() genera ValueError si no encuentra el texto. count() cuenta ocurrencias:
print("banana".count("a"))Reemplazar texto
template = "Hola, NOMBRE"
message = template.replace("NOMBRE", "Ava")
print(message)Puedes limitar el número de sustituciones:
text = "uno uno uno"
print(text.replace("uno", "dos", 1))replace() devuelve una cadena nueva y no modifica la original.
Dividir cadenas
split() transforma texto en una lista:
line = "Python,JavaScript,Go"
languages = line.split(",")
print(languages)Sin argumento, divide grupos de espacios:
words = " código limpio y legible ".split()
print(words)splitlines() separa texto con varias líneas:
lines = "primera\nsegunda\ntercera".splitlines()Unir cadenas
join() combina un iterable de strings:
words = ["aprende", "Python", "hoy"]
sentence = " ".join(words)
print(sentence)Para muchas piezas es más claro que sumar strings repetidamente:
parts = []
for number in range(1, 6):
parts.append(str(number))
result = ", ".join(parts)
print(result)La guía de bucles for en Python muestra cómo recorrer y transformar secuencias.
Validar el contenido
print("Python3".isalnum())
print("Python".isalpha())
print("12345".isdigit())
print(" ".isspace())
print("hello".islower())
print("TITLE".isupper())Estos métodos son útiles para reglas sencillas, pero correos, contraseñas, fechas e identificadores suelen necesitar comprobaciones adicionales.
Formatear con f-strings
product = "Monitor"
price = 249.9
quantity = 2
print(f"{quantity} × {product}: ${price * quantity:.2f}")Las f-strings admiten alineación:
name = "Keyboard"
price = 89.5
print(f"{name:<20} ${price:>8.2f}")La guía de f-strings para números y moneda presenta porcentajes, fechas, padding y separadores.
Caracteres de escape y raw strings
print("Primera línea\nSegunda línea")
print("Columna 1\tColumna 2")
print("Ella dijo: \"Hola\"")Una raw string conserva la mayoría de las barras:
windows_path = r"C:\Users\Ava\Documents"
pattern = r"\d{4}-\d{2}-\d{2}"Unicode y codificación
Las strings almacenan Unicode:
greeting = "Hola — こんにちは — Hello 👋"
print(greeting)Para guardar o transmitir texto, se convierte en bytes:
text = "café"
data = text.encode("utf-8")
restored = data.decode("utf-8")
print(data)
print(restored)Utiliza una codificación explícita al abrir archivos:
with open("message.txt", "w", encoding="utf-8") as file:
file.write(greeting)El Unicode HOWTO oficial de Python explica caracteres, bytes y codificaciones.
Prefijos y sufijos
filename = "report_2026.csv"
print(filename.startswith("report_"))
print(filename.endswith(".csv"))También existen removeprefix() y removesuffix():
url = "https://example.com"
host = url.removeprefix("https://")Normalizar nombres
def normalize_name(raw_name):
cleaned = " ".join(raw_name.strip().split())
return cleaned.title()
names = [
" aLEX johnSON ",
"maria silva",
" CHRIS lee",
]
for name in names:
print(normalize_name(name))La función elimina espacios externos e internos repetidos antes de aplicar un formato.
Contar palabras
text = "Python es simple y Python es práctico."
cleaned = (
text.casefold()
.replace(",", "")
.replace(".", "")
)
counts = {}
for word in cleaned.split():
counts[word] = counts.get(word, 0) + 1
for word, count in counts.items():
print(f"{word}: {count}")Este ejemplo combina strings y diccionarios en Python.
Validación básica de contraseñas
def validate_password(password):
problems = []
if len(password) < 12:
problems.append("usa al menos 12 caracteres")
if not any(char.islower() for char in password):
problems.append("añade una minúscula")
if not any(char.isupper() for char in password):
problems.append("añade una mayúscula")
if not any(char.isdigit() for char in password):
problems.append("añade un número")
return problemsEstas reglas son educativas, no un sistema completo de autenticación. Las aplicaciones reales deben utilizar hashing seguro y bibliotecas establecidas.
Errores frecuentes
- Intentar modificar un carácter directamente.
- Olvidar asignar el resultado de un método.
- Concatenar repetidamente dentro de bucles grandes.
- Comparar entrada sin limpiar espacios.
- Confundir strings con bytes.
- Abrir archivos sin codificación explícita.
- Crear parsers manuales cuando existe una biblioteca estándar.
Conclusión
Las strings son secuencias inmutables con herramientas para slicing, búsqueda, reemplazo, división, unión, validación, formato y Unicode. Practica limpiando nombres, procesando líneas, contando palabras y generando informes: esas tareas reúnen los patrones más utilizados en proyectos reales.






