Aprende Python · lección gratuita

Lección 22 · Strings a fondo

Resumen

Los strings en Python son secuencias inmutables de caracteres con un arsenal de métodos para cortarlos, buscarlos y transformarlos. En esta lección dominas el slicing y los métodos más usados del día a día, además del formateo avanzado con f-strings para alinear texto y controlar decimales.

Conceptos

El slicing usa la sintaxis cadena[inicio:fin], donde inicio se incluye y fin se excluye. Si omites inicio empieza desde el principio, y si omites fin llega hasta el final. También puedes usar índices negativos para contar desde el final. Recuerda que el slicing nunca modifica el string original: crea uno nuevo.

texto = "Python"
print(texto[0:3])   # Pyt  (índices 0,1,2)
print(texto[3:])    # hon  (desde el 3 hasta el final)
print(texto[-3:])   # hon  (los últimos 3)

Los métodos de transformación trabajan en conjunto. split(separador) convierte un string en una lista; si no pasas separador, parte por espacios. join hace lo inverso: une los elementos de una lista usando como pegamento el string sobre el que lo llamas. Por su parte replace, find, startswith y endswith sirven para buscar y reemplazar. Como los strings son inmutables, texto.replace("a", "o") no cambia texto: tienes que guardar el resultado.

frase = "rojo,verde,azul"
colores = frase.split(",")     # ['rojo', 'verde', 'azul']
print("-".join(colores))       # rojo-verde-azul
print(frase.find("verde"))     # 5  (posición donde empieza)

Finalmente, las f-strings permiten formateo avanzado dentro de {}. Con {valor:.2f} muestras 2 decimales; con {texto:>10} alineas a la derecha en un ancho de 10; < alinea a la izquierda y ^ centra. Puedes combinar ancho y decimales, por ejemplo {precio:>8.2f}.

precio = 3.14159
print(f"{precio:.2f}")      # 3.14
print(f"{'hola':>8}")       # '    hola'  (8 de ancho, derecha)
print(f"{'hola':^8}")       # '  hola  '  (centrado)

Ejemplos

# 1. Slicing: extraer partes de un string
palabra = "programacion"
print(palabra[0:4])     # prog
print(palabra[-3:])     # ion

# 2. split y join trabajando juntos
csv = "ana;luis;sara"
nombres = csv.split(";")        # ['ana', 'luis', 'sara']
print(" y ".join(nombres))      # ana y luis y sara

# 3. replace y búsqueda
texto = "me gusta java"
print(texto.replace("java", "python"))   # me gusta python
print(texto.startswith("me"))            # True
print(texto.find("gusta"))               # 3

# 4. f-strings con decimales y alineación
total = 1250.5
print(f"Total: {total:.2f}")    # Total: 1250.50
print(f"{'ID':<5}{'Nombre':<10}")  # ID   Nombre
💡 Recuerda que los strings son inmutables. Métodos como replace() o upper() no cambian el original: siempre guarda el resultado en una variable o úsalo directamente.

Cheatsheet

OperaciónSintaxisResultado
Slicings[1:4]Subcadena del índice 1 al 3
Desde inicios[:3]Primeros 3 caracteres
Hasta el finals[2:]Desde índice 2 al final
Últimos ns[-3:]Últimos 3 caracteres
Partirs.split(",")Lista separada por ,
Unir"-".join(lista)String unido con -
Reemplazars.replace("a", "b")Nuevo string con ab
Buscars.find("x")Índice o -1 si no existe
Empieza cons.startswith("ab")True/False
Termina cons.endswith("z")True/False
Decimalesf"{x:.2f}"2 decimales
Alinear derechaf"{x:>8}"Ancho 8, a la derecha
Centrarf"{x:^8}"Ancho 8, centrado

---

← Scope, lambda, map y filterNúmeros y matemáticas →

Ver todas las lecciones de Aprende Python →