Cadenas en Python: crear, acceder, rebanar y manipular texto
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Piensa en tu teléfono. Casi todo lo que ves en la pantalla es texto: los nombres de tus contactos, los mensajes de tus amigos, los resultados de búsqueda, las notificaciones. Por dentro, todo ese texto se maneja con cadenas de texto.
Una cadena de texto (string) es la forma en que Python guarda y trabaja con texto. Puede ser una sola letra, una frase completa o incluso un libro entero. Si es texto, es una cadena.
En este tutorial aprenderás a crear cadenas, sacar caracteres concretos, cortarlas en trozos, unirlas y comprobar qué hay dentro de ellas. Son habilidades que usarás en casi todos los programas de Python que escribas.
¿Qué son las cadenas de texto en Python?
Una cadena es una secuencia de caracteres entre comillas. Puedes usar comillas simples, dobles o triples. Python las trata a todas como cadenas.
Imagina una cadena como un collar de cuentas. Cada cuenta es un carácter. Las comillas son el broche que mantiene el collar cerrado.
Hello, world! Hello, world! Roses are red, Violets are blue, Python is awesome, And so are you.
Las comillas simples y las dobles funcionan exactamente igual. La razón principal de tener las dos es la comodidad: si tu texto contiene un tipo de comilla, puedes encerrarlo con el otro.
It's a beautiful day <div class="container">Hello</div>
Incluso un par de comillas vacías crea una cadena. Una cadena vacía tiene cero caracteres, pero sigue siendo una cadena válida.
<class 'str'> 0 1
¿Cómo accedes a un carácter concreto de una cadena?
Cada carácter de una cadena tiene un número de posición llamado índice. Puedes tomar cualquier carácter poniendo su índice entre corchetes.
Esto es lo importante: Python empieza a contar en 0, no en 1. El primer carácter está en el índice 0, el segundo en el índice 1, y así sucesivamente. A esto se le llama indexación desde cero.
P y n
Piensa en los índices como en los números de las casas de una calle. La primera casa es la número 0, no la número 1. Al principio resulta raro, pero te acostumbrarás rápido.
¿Qué son los índices negativos en Python?
Python también te deja contar hacia atrás desde el final con índices negativos. El último carácter está en el índice -1, el penúltimo en el -2, y así sucesivamente.
n o P
¿Cómo funciona el rebanado (slicing) de cadenas en Python?
La indexación toma un carácter. El rebanado (slicing) toma un trozo de varios caracteres. Es como cortar una rebanada del centro de una barra de pan.
La sintaxis es string[start:stop]. Toma los caracteres desde start hasta stop, pero sin incluirlo. Esta regla de "hasta, pero sin incluir" es una de las cosas más importantes que debes recordar.
Hello World H
Puedes omitir el inicio o el fin. Si omites el inicio, Python empieza desde el principio. Si omites el fin, Python llega hasta el final de la cadena.
Hello World! Hello, World!
¿Cómo funciona el paso (step) en el rebanado?
Puedes añadir un tercer número: string[start:stop:step]. El paso (step) controla cuántos caracteres se saltan. Un paso de 2 toma un carácter sí y otro no.
acegi adgj bdfh
El uso más famoso del paso es invertir una cadena. Un paso de -1 recorre toda la cadena hacia atrás.
nohtyP racecar
¿Cómo unes cadenas en Python?
La concatenación consiste en unir cadenas. En Python se hace con el operador +. Es como encajar dos piezas de LEGO para formar algo más largo.
Ada Lovelace Hello, world!
La repetición usa el operador *. Repite una cadena el número de veces que le indiques. Es sorprendentemente útil para crear separadores, patrones o relleno.
HaHaHa ------------------------------ abc abc abc abc My Report =========
¿Cómo sabes la longitud de una cadena?
La función len() te dice cuántos caracteres tiene una cadena. Eso incluye letras, números, espacios y caracteres especiales. Cada carácter cuenta.
13 5 0 n
¿Cómo compruebas si un texto está dentro de una cadena?
El operador in comprueba si una cadena aparece dentro de otra. Devuelve True o False. Es como usar Ctrl+F para buscar una palabra en un documento.
True False True True
False True User said yes!
¿Qué son los caracteres de escape en las cadenas de Python?
Hay caracteres que no se pueden escribir directamente dentro de una cadena. ¿Cómo pones un salto de línea en una cadena? ¿Y un tabulador? Usas caracteres de escape: secuencias especiales que empiezan con una barra invertida \.
Line 1 Line 2 Line 3 Name Age City Alice 25 Paris Bob 30 Tokyo File path: C:\Users\Documents She said "hello"
Aquí tienes una referencia rápida de los caracteres de escape que más vas a usar:
| Escape | Qué hace | Ejemplo de salida |
|---|---|---|
\n | Salto de línea | Texto en una línea nueva |
\t | Tabulador | Añade un espacio de tabulación |
\\ | Barra invertida | Imprime una sola \ |
\" | Comilla doble | Imprime " dentro de una cadena entre " |
\' | Comilla simple | Imprime ' dentro de una cadena entre ' |
¿Por qué no puedes cambiar un carácter de una cadena en Python?
Las cadenas en Python son inmutables. Eso significa que, una vez creada una cadena, no puedes cambiar ninguno de sus caracteres. No puedes sustituir una letra ni corregir una errata dentro de una cadena que ya existe.
Piensa en una cadena como en un libro impreso. Puedes leer cualquier página, pero no puedes borrar una palabra y escribir otra. Si quieres cambiar algo, tienes que imprimir un libro nuevo.
Error: 'str' object does not support item assignment
Entonces, ¿cómo "cambias" una cadena? Creas una cadena nueva con los cambios que quieres. El rebanado y la concatenación lo hacen fácil.
word = "Hello"
word[0] = "J" # TypeError!word = "Hello"
new_word = "J" + word[1:]
print(new_word) # JelloEjercicios de práctica
¡Hora de practicar! Estos ejercicios cubren todo lo que viste en este tutorial. Empiezan fáciles y van subiendo de nivel.
Intenta resolver cada uno antes de mirar las pistas. Equivocarte y leer los mensajes de error es como de verdad se aprende.
Tienes dos variables: first_name con el valor "Ada" y last_name con el valor "Lovelace". Crea una variable llamada greeting que las combine en un mensaje y luego imprímela.
Salida esperada:
Hello, Ada Lovelace! Welcome to Python.Usa la concatenación de cadenas (+) para construir el saludo.
Tienes una variable word con el valor "Programming". Imprime el primer carácter y el último en líneas separadas.
Salida esperada:
P
gUsa la indexación de cadenas para acceder a cada carácter.
Tienes una variable text con el valor "Python". Imprime la cadena al revés.
Salida esperada:
nohtyPUsa el rebanado para invertirla en un solo paso.
Sin ejecutar el código, predice qué imprimirá cada línea. Recuerda: el rebanado usa [start:stop], y stop queda excluido.
Escribe tus predicciones como comentarios y luego ejecuta el código para comprobarlas.
Este código intenta corregir una errata cambiando un carácter directamente. Pero las cadenas son inmutables, así que falla.
Corrige el código para que imprima:
Hello WorldCrea una cadena nueva en lugar de modificar la anterior.
Tienes una sentence y una search_word. Comprueba si la palabra buscada aparece en la frase (sin distinguir mayúsculas de minúsculas) e imprime el resultado.
Salida esperada:
TruePasa las dos a minúsculas (o a mayúsculas) antes de comprobarlo.
Tienes una dirección de correo guardada en email. Extrae solo el nombre de dominio (la parte que va después del símbolo @) e imprímelo.
Salida esperada:
gmail.comUsa el método .find() para localizar el símbolo @ y luego usa el rebanado para extraer todo lo que hay después.
Resumen: cadenas de texto en Python
Aquí tienes una referencia rápida de todo lo que aprendiste:
| Concepto | Sintaxis | Ejemplo |
|---|---|---|
| Crear una cadena | "text" o 'text' | name = "Alice" |
| Indexación | string[i] | "Hello"[0] da "H" |
| Indexación negativa | string[-i] | "Hello"[-1] da "o" |
| Rebanado | string[start:stop] | "Hello"[1:4] da "ell" |
| Rebanado con paso | string[::step] | "Hello"[::-1] da "olleH" |
| Concatenación | + | "Hi" + " there" da "Hi there" |
| Repetición | * | "Ha" * 3 da "HaHaHa" |
| Longitud | len(string) | len("Hello") da 5 |
| Pertenencia | in | "fox" in "a fox" da True |
| Caracteres de escape | \n, \t, \\ | Caracteres especiales dentro de cadenas |
Lo esencial: las cadenas son inmutables. Puedes leer sus caracteres, rebanarlas, buscar en ellas y combinarlas, pero nunca puedes cambiar una cadena directamente. Cualquier "cambio" crea una cadena completamente nueva.
¿Qué sigue?
Ahora que sabes crear y rebanar cadenas, es hora de aprender a transformarlas. En el siguiente tutorial, [Métodos de cadenas en Python](/python/python-string-methods), descubrirás métodos integrados como .upper(), .replace(), .split() y .strip(), que hacen que trabajar con texto sea pan comido.