Todos los métodos de cadenas en Python explicados con ejemplos
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Las cadenas de Python vienen con una caja de herramientas de métodos integrados. Con ellos puedes cambiar entre mayúsculas y minúsculas, quitar espacios de sobra, buscar palabras, dividir el texto en partes y mucho más.
Piensa en los métodos de cadenas como en las aplicaciones de tu teléfono. Cada una hace un trabajo concreto. No necesitas memorizarlos todos ahora; basta con saber que existen para recurrir al adecuado cuando lo necesites.
En este tutorial aprenderás todos los métodos de cadenas importantes con ejemplos en vivo que puedes ejecutar y modificar. Al terminar, podrás limpiar, buscar, dividir y transformar cualquier texto que Python te ponga delante.
Cómo convertir cadenas a mayúsculas en Python
Python te ofrece cinco métodos para cambiar las mayúsculas y minúsculas de una cadena. Los dos más comunes son upper() y lower().
HELLO, WORLD! hello, world! Hello, World! Hello, world! HELLO, WORLD!
upper() convierte todas las letras a mayúsculas. lower() convierte todas las letras a minúsculas. Estos dos son los caballos de batalla que más vas a usar.
title() pone en mayúscula la primera letra de cada palabra, como en los títulos de libros en inglés. capitalize() solo pone en mayúscula la primera letra de toda la cadena y pasa el resto a minúsculas.
swapcase() invierte cada letra: las mayúsculas pasan a minúsculas y viceversa. No se usa mucho, pero resulta útil cuando hace falta.
User said yes! Ada Lovelace
Cómo quitar los espacios en blanco de las cadenas en Python
Los espacios de sobra y los caracteres invisibles se cuelan en las cadenas todo el tiempo: en lo que escribe el usuario, al leer archivos o al copiar y pegar. La familia de strip() se encarga de esto a la perfección.
' hello, world! ' 'hello, world!' 'hello, world! ' ' hello, world!'
strip() quita los espacios en blanco de los dos extremos de una cadena. Es como cortar la corteza de los dos lados de un sándwich.
lstrip() solo recorta el lado izquierdo. rstrip() solo recorta el lado derecho. La "l" y la "r" vienen de left (izquierda) y right (derecha) en inglés.
En el ejemplo usamos repr() para que puedas ver los espacios. Normalmente, print() ocultaría los espacios del final.
report.txt https://example.com
Cómo buscar dentro de una cadena en Python
Python te ofrece varias formas de buscar texto dentro de una cadena. Las más importantes son find(), count(), startswith() y endswith().
Cómo usar find() e index() en Python
find() te dice dónde aparece por primera vez una subcadena. Devuelve el índice (el número de posición) de la primera coincidencia, contando desde 0.
7 2 -1 3 11
Cuando find() no encuentra la subcadena, devuelve -1. Es su forma de decir "no está".
index() hace el mismo trabajo que find(), pero con una diferencia clave: si no encuentra la subcadena, lanza un ValueError en lugar de devolver -1.
text = "hello world"
result = text.find("xyz")
print(result) # -1 (safe, no crash)text = "hello world"
# result = text.index("xyz")
# ValueError: substring not found
# Use index() only when you're SURE
# the substring exists
result = text.index("world")
print(result) # 6Cómo contar apariciones en una cadena con count()
count() te dice cuántas veces aparece una subcadena en la cadena. Distingue mayúsculas de minúsculas, así que "The" y "the" se cuentan por separado.
3 4 0 0
Cómo comprobar cómo empieza y cómo termina una cadena en Python
startswith() y endswith() devuelven True o False. Son perfectos para comprobar extensiones de archivo, prefijos de URL o cualquier patrón en los extremos de una cadena.
True True False True
Cómo reemplazar texto en una cadena de Python
replace() cambia cada aparición de una subcadena por otra. Es como la función de buscar y reemplazar de un procesador de textos.
I like dogs. Cats are great. I have two dogs. I like dogs. Cats are great. I have two cats.
El tercer argumento es opcional. Limita cuántos reemplazos se hacen. Sin él, replace() cambia todas las coincidencias que encuentra.
Recuerda: replace() distingue mayúsculas de minúsculas. "cats" y "Cats" se tratan como subcadenas distintas.
Cómo dividir una cadena en Python
split() corta una cadena en una lista de cadenas más pequeñas. Por defecto, divide en cualquier espacio en blanco (espacios, tabuladores, saltos de línea).
['Python', 'is', 'easy', 'to', 'learn'] ['Alice', '25', 'New York', 'Engineer'] John Smith Jr.
El primer argumento es el delimitador: el carácter (o la cadena) por donde se hace la división. El segundo argumento limita el número de divisiones.
rsplit() funciona igual, pero empieza a dividir por la derecha. Esto importa cuando usas un límite.
['home', 'user/documents/report.txt'] ['home/user/documents', 'report.txt']
Cómo unir una lista en una cadena en Python
join() es lo contrario de split(). Toma una lista de cadenas y las pega con un separador. El separador es la cadena sobre la que llamas a join().
Python is awesome Python-is-awesome Python, is, awesome Python is awesome
Al principio la sintaxis parece estar al revés: separator.join(list). Léela así: "usa este separador para unir esa lista".
Un patrón común es dividir una cadena, modificar los trozos y volver a unirlos.
PYTHON IS EASY TO LEARN Alice,25,New York
Cómo comprobar el contenido de una cadena en Python
Python tiene una familia de métodos is____() que devuelven True o False según lo que contenga una cadena. Son ideales para validar lo que escribe el usuario.
True False True False True False True False
isalpha() comprueba que solo haya letras. isdigit() comprueba que solo haya dígitos. isalnum() comprueba que solo haya letras o dígitos (caracteres alfanuméricos). isspace() comprueba que solo haya espacios en blanco.
Todos estos métodos devuelven False con una cadena vacía. Una cadena vacía no tiene caracteres que comprobar, así que nada pasa la prueba.
"player42" is a valid username You entered the number 42
Cómo rellenar y alinear cadenas en Python
A veces necesitas que un texto tenga un ancho determinado: para tablas, recibos o una salida ordenada en la terminal. Los métodos de relleno de Python añaden caracteres para llenar el hueco.
hi ----hi---- hi........ ........hi 00042 007
center() centra la cadena dentro del ancho indicado. ljust() la alinea a la izquierda y rellena por la derecha. rjust() la alinea a la derecha y rellena por la izquierda.
zfill() es un atajo para rellenar números con ceros a la izquierda. Es perfecto para números de pedido, marcas de tiempo o nombres de archivo como image_007.png.
Item Price ----------------------- Coffee $4.50 Sandwich $8.99 Cookie $2.25 ----------------------- Total $15.74
Cómo encadenar métodos de cadenas en Python
Como cada método de cadena devuelve una cadena nueva, puedes llamar a otro método sobre el resultado. Esto se llama encadenamiento de métodos (method chaining).
hello world! hello world!
Lee la secuencia de izquierda a derecha: primero strip, luego el paso a minúsculas y después replace. Cada método trabaja sobre el resultado del anterior.
Ejercicios de práctica
¡Hora de poner a trabajar esos métodos de cadenas! Cada ejercicio se centra en un grupo distinto de los métodos que acabas de aprender.
Tienes una cadena desordenada guardada en la variable user_input. Tiene espacios de sobra en los dos lados y letras mayúsculas puestas al azar.
Límpiala así:
1. Quita los espacios en blanco de los dos extremos
2. Pásala toda a minúsculas
Imprime el resultado limpio. La salida debería ser:
hello pythonCuenta cuántas veces aparece la palabra "the" en la frase de abajo. Usa el método count().
Imprime el resultado exactamente con este formato:
the appears 4 timesPista: pasa antes la frase a minúsculas para contar tanto "the" como "The".
Reemplaza cada aparición de "JavaScript" por "Python" en la frase de abajo e imprime el resultado.
Salida esperada:
I love Python. Python is great. Learning Python is fun.Tienes una línea de valores separados por comas. Divídela en valores sueltos e imprime cada uno en su propia línea.
Salida esperada:
Alice
25
New York
EngineerEste código intenta encontrar la posición de "Python" en una frase. Funciona cuando la palabra existe, pero falla cuando no está.
Corrige el código para que:
"Word not found" cuando la palabra no estéSalida esperada:
Found at position 7
Word not foundPista: el error está en que index() falla cuando la palabra no está. ¿Qué método devuelve -1 en lugar de fallar?
Escribe un programa que valide un nombre de usuario según estas reglas:
Te damos tres nombres de usuario. Para cada uno, imprime "Valid" si cumple las dos reglas o "Invalid" si falla alguna de ellas.
Salida esperada:
player42: Valid
ab: Invalid
hello world!: InvalidResumen: guía rápida de métodos de cadenas en Python
Aquí tienes una referencia rápida de todos los métodos de este tutorial:
| Método | Qué hace | Ejemplo |
|---|---|---|
upper() | Todo en mayúsculas | "hi".upper() → "HI" |
lower() | Todo en minúsculas | "HI".lower() → "hi" |
title() | Mayúscula inicial en cada palabra | "hi there".title() → "Hi There" |
capitalize() | Mayúscula solo en la primera letra | "hi there".capitalize() → "Hi there" |
strip() | Quita los espacios de los extremos | " hi ".strip() → "hi" |
find() | Posición de la subcadena (-1 si no está) | "hello".find("ll") → 2 |
count() | Cuenta apariciones | "banana".count("a") → 3 |
startswith() | Comprueba el inicio | "hello".startswith("he") → True |
endswith() | Comprueba el final | "file.py".endswith(".py") → True |
replace() | Cambia subcadenas | "hi".replace("hi", "bye") → "bye" |
split() | Divide en una lista | "a,b,c".split(",") → ["a","b","c"] |
join() | Une una lista | ",".join(["a","b"]) → "a,b" |
isdigit() | ¿Solo dígitos? | "123".isdigit() → True |
isalpha() | ¿Solo letras? | "abc".isalpha() → True |
isalnum() | ¿Letras o dígitos? | "abc1".isalnum() → True |
zfill() | Rellena con ceros | "42".zfill(5) → "00042" |
No necesitas memorizar esta tabla. Lo importante es saber que estos métodos existen para poder consultarlos cuando los necesites.
¿Qué sigue?
En el siguiente tutorial, [Formato de cadenas en Python](/python/python-string-formatting), aprenderás a controlar exactamente cómo aparecen los valores dentro de las cadenas. Dominarás el formato con f-strings, la alineación, el formato de números y mucho más.