Cadenas de texto en Python: métodos, slicing y ejercicios

Actualizado el 29 de septiembre de 2026

Una cadena de texto (string, o str en Python) es una secuencia de caracteres: un nombre, un correo, una línea de un archivo. Buena parte de la programación del día a día es limpiar, cortar, buscar y armar textos, y Python trae métodos para casi todo.

En esta guía vas a ver cómo acceder a partes de un texto, los métodos más útiles y la característica que más confunde al principio: los strings no se pueden modificar.

Índices y slicing

Un string funciona como una lista de caracteres: cada uno tiene un índice que parte en 0, y se puede cortar con la misma notación [inicio:fin] que las listas.

texto = "Programar"

texto[0]      # 'P'
texto[-1]     # 'r'
texto[0:3]    # 'Pro'
texto[::-1]   # 'ramargorP' (invertido)
len(texto)    # 9

Dentro de un string, \n representa un salto de línea. Para escribir un texto de varias líneas también se pueden usar comillas triples: """...""".

Los strings no se modifican: se crean nuevos

Los strings son inmutables. Ningún método cambia el texto original: todos devuelven un string nuevo. Por eso, para quedarte con el resultado, tienes que guardarlo:

t = "hola"
t.upper()
print(t)       # hola  (no cambió)

t = t.upper()
print(t)       # HOLA

Limpiar y transformar

s = "  Hola Mundo  "

s.strip()                       # 'Hola Mundo'  (quita espacios al inicio y al final)
s.lower()                       # '  hola mundo  '
s.upper()                       # '  HOLA MUNDO  '
s.strip().replace("Mundo", "Chile")  # 'Hola Chile'

"hola mundo".title()            # 'Hola Mundo'
"hola mundo".capitalize()       # 'Hola mundo'

Como cada método devuelve un string, se pueden encadenar: s.strip().lower() limpia y pasa a minúsculas en una línea. strip() es especialmente útil con datos que escribe una persona, que casi siempre traen espacios de más.

Separar y unir: split y join

"uno,dos,tres".split(",")              # ['uno', 'dos', 'tres']
"  varias   palabras  aquí ".split()   # ['varias', 'palabras', 'aquí']

"-".join(["2026", "09", "29"])        # '2026-09-29'
" ".join(["hola", "mundo"])           # 'hola mundo'

split() corta un texto en una lista y join() hace lo contrario. join se escribe al revés de lo que uno esperaría: el separador va primero y la lista entre paréntesis. Sin argumentos, split() separa por cualquier cantidad de espacios y descarta los vacíos.

Buscar dentro de un texto

frase = "el perro y el gato"

"perro" in frase         # True
frase.find("el")         # 0   (posición de la primera aparición)
frase.find("pez")        # -1  (no está)
frase.count("el")        # 2
frase.startswith("el")   # True
frase.endswith("gato")   # True

"123".isdigit()          # True
"abc".isalpha()          # True

Para comparar sin importar mayúsculas, convierte ambos lados: a.lower() == b.lower().

Errores comunes

Intentar cambiar una letra

texto = "Programar"
texto[0] = "p"
# TypeError: 'str' object does not support item assignment

Como los strings son inmutables, hay que armar uno nuevo: "p" + texto[1:], o usar replace().

Llamar un método sin guardar el resultado

nombre.strip() sola no hace nada visible: devuelve un texto limpio que se pierde. Escribe nombre = nombre.strip(). Es el error más común con strings, justamente porque las listas sí se modifican con métodos como append().

split(" ") con espacios repetidos

"a  b".split(" ")   # ['a', '', 'b']
"a  b".split()      # ['a', 'b']

Con un separador explícito, dos espacios seguidos generan un elemento vacío. Para separar palabras, usa split() sin argumentos.

find e index no son iguales

Si el texto buscado no está, find() devuelve -1 y index() lanza ValueError: substring not found. Cuidado con find: -1 es un índice válido (el último carácter), así que usarlo sin revisar puede dar resultados raros en vez de un error.

Ejercicios resueltos

Intenta resolver cada ejercicio antes de abrir la solución: equivocarse y corregir es la parte que más enseña.

1.¿Es palíndromo?

Escribe una función es_palindromo(texto) que devuelva True si el texto se lee igual al derecho y al revés, sin considerar espacios ni mayúsculas.

  • es_palindromo("Anita lava la tina") → True
  • es_palindromo("reconocer") → True
  • es_palindromo("python") → False
Punto de partida
def es_palindromo(texto):
    ...
Ver solución
Solución
def es_palindromo(texto):
    limpio = texto.replace(" ", "").lower()
    return limpio == limpio[::-1]

Primero se normaliza el texto: sin espacios y en minúsculas, porque "A" y "a" deben contar como la misma letra. Después basta con compararlo con su versión invertida, limpio[::-1]. Guardar el texto limpio en una variable evita repetir la limpieza dos veces.

2.Iniciales de un nombre

Escribe una función iniciales(nombre_completo) que devuelva la inicial de cada palabra en mayúscula, seguida de un punto.

  • iniciales("gabriela mistral") → "G.M."
  • iniciales("Pablo Neruda") → "P.N."
Punto de partida
def iniciales(nombre_completo):
    ...
Ver solución
Solución
def iniciales(nombre_completo):
    resultado = ""
    for palabra in nombre_completo.split():
        resultado += palabra[0].upper() + "."
    return resultado

split() sin argumentos separa las palabras aunque haya espacios de más, como en el segundo ejemplo. De cada palabra se toma la primera letra, se pasa a mayúscula y se agrega un punto. El resultado se va armando en un acumulador que parte como texto vacío.

Una versión más compacta, cuando conozcas las comprensiones: "".join(p[0].upper() + "." for p in nombre_completo.split()).

3.Invertir el orden de las palabras

Escribe una función invertir_palabras(frase) que devuelva las mismas palabras en orden inverso, separadas por un solo espacio.

  • invertir_palabras("hola mundo cruel") → "cruel mundo hola"
  • invertir_palabras(" uno dos ") → "dos uno"
Punto de partida
def invertir_palabras(frase):
    ...
Ver solución
Solución
def invertir_palabras(frase):
    return " ".join(frase.split()[::-1])

Se combinan tres pasos: split() convierte la frase en una lista de palabras, [::-1] invierte la lista y " ".join() la vuelve a unir con un espacio. Invertir la frase completa con frase[::-1] no sirve: daría "leurc odnum aloh", porque invertiría también las letras.

Practica Python con ejercicios a tu nivel

En Coditer resuelves ejercicios en el navegador, con tests automáticos que revisan tu código y una IA que te da pistas cuando te atascas. Practicar es gratis.