Todas las funciones de cadena
¡Perfecto! Vamos a ver todas las funciones de cadena en Python, una por una, sin omitir ninguna. Para cada función incluiré dos ejemplos claros. Algunas son métodos de objetos str
y otras funciones útiles que pueden operar sobre cadenas.
🔤 Métodos de cadena (str
) en Python
Estos son los métodos que puedes aplicar directamente sobre cadenas, como "texto".método()
.
1. str.capitalize()
Devuelve la cadena con la primera letra en mayúscula y el resto en minúscula.
"python".capitalize() # "Python"
"hOLA MUNDO".capitalize() # "Hola mundo"
2. str.casefold()
Convierte todo a minúsculas, más agresivo que .lower()
(útil para comparación sin distinción de mayúsculas/minúsculas).
"Straße".casefold() # "strasse"
"PYTHON".casefold() # "python"
3. str.center(width, fillchar=' ')
Centra la cadena en un ancho dado, rellenando con el caracter opcional.
"hola".center(10, "-") # "---hola---"
"mundo".center(8) # " mundo "
4. str.count(sub[, start[, end]])
Cuenta cuántas veces aparece un substring.
"banana".count("a") # 3
"banana".count("na") # 2
5. str.encode(encoding='utf-8', errors='strict')
Devuelve la cadena codificada como bytes.
"café".encode() # b'caf\xc3\xa9'
"café".encode('ascii', 'ignore') # b'caf'
6. str.endswith(suffix[, start[, end]])
Verifica si la cadena termina con cierto sufijo.
"reporte.pdf".endswith(".pdf") # True
"imagen.png".endswith(".jpg") # False
7. str.expandtabs(tabsize=8)
Reemplaza los tabuladores (\t
) con espacios.
"hola\tmundo".expandtabs(4) # "hola mundo"
"1\t2\t3".expandtabs(2) # "1 2 3"
8. str.find(sub[, start[, end]])
Devuelve el índice de la primera aparición de sub
. Devuelve -1
si no se encuentra.
"hello world".find("world") # 6
"hello".find("z") # -1
9. str.format(*args, **kwargs)
Formatea la cadena usando llaves {}
.
"Hola, {}!".format("Luis") # "Hola, Luis!"
"{nombre} tiene {edad} años".format(nombre="Ana", edad=30) # "Ana tiene 30 años"
10. str.format_map(mapping)
Similar a .format()
pero usa un diccionario directamente.
data = {"x": 1, "y": 2}
"{x}, {y}".format_map(data) # "1, 2"
user = {"name": "Alice"}
"Hola, {name}".format_map(user) # "Hola, Alice"
11. str.index(sub[, start[, end]])
Como .find()
pero lanza excepción si no se encuentra.
"python".index("t") # 2
"python".index("on") # 4
12. str.isalnum()
¿La cadena solo contiene letras y números?
"abc123".isalnum() # True
"abc 123".isalnum() # False
13. str.isalpha()
¿La cadena solo contiene letras?
"Python".isalpha() # True
"Py123".isalpha() # False
14. str.isascii()
¿Todos los caracteres son ASCII?
"hello".isascii() # True
"café".isascii() # False
15. str.isdecimal()
¿Solo contiene caracteres decimales?
"123".isdecimal() # True
"123".isdecimal() # True (números en unicode)
16. str.isdigit()
¿Solo contiene dígitos (más general que isdecimal
)?
"123".isdigit() # True
"²³".isdigit() # True
17. str.isidentifier()
¿Es un identificador válido en Python?
"variable1".isidentifier() # True
"1variable".isidentifier() # False
18. str.islower()
¿Todas las letras están en minúsculas?
"hola".islower() # True
"Hola".islower() # False
19. str.isnumeric()
¿Solo contiene caracteres numéricos?
"123".isnumeric() # True
"Ⅻ".isnumeric() # True (números romanos unicode)
20. str.isprintable()
¿Todos los caracteres son imprimibles?
"Hola\n".isprintable() # False (por el salto de línea)
"123abc".isprintable() # True
21. str.isspace()
¿La cadena solo contiene espacios (o tabulaciones, saltos de línea…)?
" ".isspace() # True
" a ".isspace() # False
22. str.istitle()
¿Cada palabra comienza con mayúscula?
"Hola Mundo".istitle() # True
"hola Mundo".istitle() # False
23. str.isupper()
¿Todas las letras están en mayúsculas?
"GRITOS".isupper() # True
"Hola".isupper() # False
24. str.join(iterable)
Une una secuencia de cadenas con un separador.
", ".join(["Ana", "Luis", "Eva"]) # "Ana, Luis, Eva"
"".join(["1", "2", "3"]) # "123"
25. str.ljust(width[, fillchar])
Justifica a la izquierda.
"hi".ljust(5, "*") # "hi***"
"42".ljust(4) # "42 "
26. str.lower()
Convierte a minúsculas.
"HELLO".lower() # "hello"
"PyTHon".lower() # "python"
27. str.lstrip([chars])
Elimina espacios o caracteres desde la izquierda.
" hola".lstrip() # "hola"
"---texto".lstrip("-") # "texto"
28. str.maketrans(x[, y[, z]])
Crea una tabla de traducción para usar con .translate()
.
tabla = str.maketrans("ae", "12")
"mesa".translate(tabla) # "m1s1"
tabla2 = str.maketrans({"a": "4", "e": "3"})
"cadena".translate(tabla2) # "c4d3n4"
29. str.partition(sep)
Divide en 3 partes: antes, separador, después.
"hola:mundo".partition(":") # ('hola', ':', 'mundo')
"sin separador".partition("-") # ('sin separador', '', '')
30. str.replace(old, new[, count])
Reemplaza subcadenas.
"hola mundo".replace("o", "0") # "h0la mund0"
"aaaa".replace("a", "b", 2) # "bbaa"
31. str.rfind(sub[, start[, end]])
Como find()
pero busca desde la derecha.
"banana".rfind("a") # 5
"banana".rfind("z") # -1
32. str.rindex(sub[, start[, end]])
Como index()
pero desde la derecha.
"banana".rindex("a") # 5
33. str.rjust(width[, fillchar])
Justifica a la derecha.
"hi".rjust(5, "-") # "---hi"
"42".rjust(4) # " 42"
34. str.rsplit(sep=None, maxsplit=-1)
Divide desde la derecha.
"uno-dos-tres".rsplit("-", 1) # ['uno-dos', 'tres']
"1,2,3,4".rsplit(",", 2) # ['1,2', '3', '4']
35. str.rstrip([chars])
Elimina espacios o caracteres desde la derecha.
"hola ".rstrip() # "hola"
"texto...".rstrip(".") # "texto"
36. str.split(sep=None, maxsplit=-1)
Divide en una lista usando el separador.
"uno,dos,tres".split(",") # ['uno', 'dos', 'tres']
"palabra palabra".split() # ['palabra', 'palabra']
37. str.splitlines([keepends])
Divide por líneas (\n
, \r\n
).
"línea1\nlínea2".splitlines() # ['línea1', 'línea2']
"línea1\nlínea2".splitlines(True) # ['línea1\n', 'línea2']
38. str.startswith(prefix[, start[, end]])
¿Empieza con…?
"archivo.txt".startswith("arch") # True
"Python".startswith("java") # False
39. str.strip([chars])
Quita espacios (o caracteres) a ambos lados.
" hola ".strip() # "hola"
"...fin...".strip(".") # "fin"
40. str.swapcase()
Invierte mayúsculas y minúsculas.
"Hola".swapcase() # "hOLA"
"PyTHon".swapcase() # "pYthON"
41. str.title()
Capitaliza la primera letra de cada palabra.
"hola mundo".title() # "Hola Mundo"
"python es divertido".title() # "Python Es Divertido"
42. str.translate(table)
Reemplaza caracteres según una tabla (usada con maketrans()
).
tabla = str.maketrans("aeiou", "12345")
"adios".translate(tabla) # "1d345"
43. str.upper()
Convierte a mayúsculas.
"python".upper() # "PYTHON"
"Hola Mundo".upper() # "HOLA MUNDO"
44. str.zfill(width)
Rellena a la izquierda con ceros hasta alcanzar el ancho dado.
"42".zfill(5) # "00042"
"-5".zfill(3) # "-05"
¡Genial! Aquí tienes una tabla resumen con los métodos de cadena más importantes en Python, agrupados por funcionalidad, seguida de una serie de ejercicios prácticos para ayudarte a dominar cada grupo. ¡Vamos allá!
🧾 Tabla resumen de métodos de cadena en Python
Categoría | Método | Descripción rápida |
---|---|---|
🔠 Cambio de mayúsculas | capitalize() / title() |
Primera letra mayúscula / Cada palabra con mayúscula |
upper() / lower() |
Todo en mayúsculas / minúsculas | |
swapcase() / casefold() |
Invierte casos / minúsculas agresivas | |
📐 Alineación / Relleno | center() / ljust() / rjust() |
Centra / Alinea a izq. / der. con relleno |
zfill() |
Rellena con ceros a la izquierda | |
🧼 Eliminar caracteres | strip() / lstrip() / rstrip() |
Elimina espacios o caracteres a los lados |
📊 Búsqueda / Conteo | find() / rfind() |
Índice de substring (izq / der) |
index() / rindex() |
Igual que find() pero lanza error si no se encuentra |
|
count() |
Cuenta ocurrencias de un substring | |
startswith() / endswith() |
Comprobación de prefijo / sufijo | |
🔤 Validación | isalnum() / isalpha() / isdigit() |
Solo letras y números / solo letras / solo dígitos |
isdecimal() / isnumeric() |
Solo números decimales / numéricos incluyendo unicode | |
isspace() / isidentifier() |
Solo espacios / identificador válido | |
isprintable() / isascii() |
Todos imprimibles / solo caracteres ASCII | |
islower() / isupper() / istitle() |
Verifica tipo de mayúsculas | |
🧩 División / Unión | split() / rsplit() / splitlines() |
Divide cadena por separador / líneas / desde la derecha |
join() |
Une elementos de una lista con un separador | |
🧱 Reemplazo | replace() / translate() |
Sustituye substrings o caracteres (con maketrans() ) |
📜 Formato | format() / format_map() |
Formato con llaves {} y diccionarios |
🧪 Codificación | encode() |
Convierte en bytes |
🧷 Partición | partition() / expandtabs() |
Divide por separador / Expande tabuladores |
🧠 Ejercicios prácticos por categoría
🔠 Cambio de mayúsculas
- Convierte
"hola mundo"
a mayúsculas, luego invierte el caso. - Dada la frase
"eL mUnDo eS DiVerTidO"
, corrige su formato a título.
📐 Alineación / Relleno
- Muestra la palabra
"centro"
centrada en 20 caracteres usando*
como relleno. - Imprime el número
"42"
justificado a la derecha en 6 espacios usando-
.
🧼 Eliminar caracteres
- Elimina los
*
del inicio y fin de la cadena"***texto***"
. - Limpia los espacios de
" nombre "
y conviértelo a mayúsculas.
📊 Búsqueda / Conteo
- Cuenta cuántas veces aparece la letra
"a"
en"banana amarilla"
. - Busca el índice de
"n"
en"reconocimiento"
(desde la derecha).
🔤 Validación
- Verifica si
"clave123"
es alfanumérica. - Comprueba si
"12345"
es un número decimal, y si"Ⅻ"
es numérico.
🧩 División / Unión
- Divide la cadena
"manzana,pera,uva"
en una lista. - Une las palabras
["Hola", "mundo"]
usando un espacio.
🧱 Reemplazo
- Reemplaza
"python"
por"Java"
en"Me gusta python"
. - Usa
maketrans()
para convertir"123"
en"uno dos tres"
(ejemplo:"1" -> "uno"
).
📜 Formato
- Usa
.format()
para imprimir:"Ana tiene 30 años"
. - Usa
.format_map()
con un diccionario{"ciudad": "Madrid", "pais": "España"}
.
🧪 Codificación
- Codifica
"café"
a bytes en UTF-8. - Codifica
"niño"
ignorando caracteres no ASCII.
🧷 Partición / Tabs
- Divide
"usuario:admin"
usandopartition()
para obtener usuario y rol. - Transforma
"nombre\tedad"
a"nombre edad"
conexpandtabs(8)
.