1. ¿Qué es una cadena?
Una cadena (string) es una secuencia de caracteres: letras, números, símbolos o espacios.
En Python se representan entre comillas simples '...' o dobles "...".
nombre = "Ana"
mensaje = 'Hola, mundo'
2. Características importantes
Inmutabilidad
Las cadenas no se pueden modificar. Si cambias algo, realmente estás creando una nueva cadena.
Indexación
Puedes acceder a cada carácter por su posición:
print(texto[0]) # P
print(texto[-1]) # n
Slicing (rebanado)
Permite obtener partes de la cadena:
print(texto[0:7]) # Program
print(texto[5:]) # amación
print(texto[:5]) # Progr
3. Métodos útiles de cadenas
Python incluye muchos métodos integrados:
| Método | Descripción | Ejemplo |
|---|---|---|
| .upper() | Mayúsculas | "hola".upper() → "HOLA" |
| .lower() | Minúsculas | "Hola".lower() → "hola" |
| .capitalize() | Primera letra mayúscula | "python".capitalize() |
| .strip() | Quita espacios | " hola ".strip() |
| .replace(a, b) | Sustituye texto | "hola mundo".replace("mundo", "Python") |
| .split() | Divide en lista | "a,b,c".split(",") |
| .join() | Une elementos | " ".join(["Hola","mundo"]) |
4. Formateo de cadenas
f-strings (recomendado)
edad = 20
print(f"Me llamo {nombre} y tengo {edad} años.")
ACTIVIDAD PRÁCTICA: “Limpieza y formateo de datos de usuarios”
Objetivo: trabajar con cadenas en un contexto realista: limpiar datos introducidos por usuarios.
Enunciado
Tienes una lista de nombres escritos de forma inconsistente. Debes normalizarlos para que:
No tengan espacios al inicio o final
Estén en formato Nombre Apellido con la primera letra en mayúscula
No contengan números
Se muestren en una lista limpia
Datos iniciales
" juan perez ",
"MARIA LOPEZ",
"aNa garCia",
"peDro99 alVarez",
" luIs "
]
Tareas
Eliminar espacios sobrantes.
Convertir todo a minúsculas.
Quitar números.
Poner en formato capitalizado:
"Nombre Apellido".Mostrar la lista final.
Pista
Puedes usar:
.strip().lower().replace().split().capitalize()"".join()Comprobación con
.isalpha()
Solución propuesta
" juan perez ",
"MARIA LOPEZ",
"aNa garCia",
"peDro99 alVarez",
" luIs "
]
usuarios_limpios = []
for u in usuarios:
# 1. Quitar espacios
u = u.strip()
# 2. Pasar a minúsculas
u = u.lower()
# 3. Quitar números
u = "".join([c for c in u if c.isalpha() or c == " "])
# 4. Separar palabras y capitalizar
partes = u.split()
partes = [p.capitalize() for p in partes]
# 5. Unir de nuevo
nombre_final = " ".join(partes)
usuarios_limpios.append(nombre_final)
print(usuarios_limpios)