Cadenas de texto (strings)

 

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:

texto = "Python"
print(texto[0])   # P
print(texto[-1])  # n

Slicing (rebanado)

Permite obtener partes de la cadena:

texto = "Programación"
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)

nombre = "Lucía"
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

usuarios = [
    "  juan perez  ",
    "MARIA LOPEZ",
    "aNa   garCia",
    "peDro99 alVarez",
    "  luIs   "
]

Tareas

  1. Eliminar espacios sobrantes.

  2. Convertir todo a minúsculas.

  3. Quitar números.

  4. Poner en formato capitalizado: "Nombre Apellido".

  5. Mostrar la lista final.

Pista

Puedes usar:

  • .strip()

  • .lower()

  • .replace()

  • .split()

  • .capitalize()

  • "".join()

  • Comprobación con .isalpha()

Solución propuesta

usuarios = [
    "  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)

Resultado esperado

['Juan Perez', 'Maria Lopez', 'Ana Garcia', 'Pedro Alvarez', 'Luis']