Aprende Python · lección gratuita
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.
cadena[a:b] extrae una porción sin modificar el original (los strings son inmutables).split() parte un string en una lista y join() une una lista en un string.replace(viejo, nuevo) sustituye texto y find(sub) devuelve la posición (o -1 si no existe).startswith() y endswith() comprueban prefijos y sufijos devolviendo True/False.<, >, ^ y formatear decimales con :.2f.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)
# 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 comoreplace()oupper()no cambian el original: siempre guarda el resultado en una variable o úsalo directamente.
| Operación | Sintaxis | Resultado |
|---|---|---|
| Slicing | s[1:4] | Subcadena del índice 1 al 3 |
| Desde inicio | s[:3] | Primeros 3 caracteres |
| Hasta el final | s[2:] | Desde índice 2 al final |
| Últimos n | s[-3:] | Últimos 3 caracteres |
| Partir | s.split(",") | Lista separada por , |
| Unir | "-".join(lista) | String unido con - |
| Reemplazar | s.replace("a", "b") | Nuevo string con a→b |
| Buscar | s.find("x") | Índice o -1 si no existe |
| Empieza con | s.startswith("ab") | True/False |
| Termina con | s.endswith("z") | True/False |
| Decimales | f"{x:.2f}" | 2 decimales |
| Alinear derecha | f"{x:>8}" | Ancho 8, a la derecha |
| Centrar | f"{x:^8}" | Ancho 8, centrado |
---