2.5 Trabajo con Cadenas
1️⃣ Cadenas (clase str)
En Python, una cadena es una secuencia inmutable de caracteres, representada por la clase str.
Se pueden definir con comillas simples, dobles o triples:
texto1 = 'Hola'
texto2 = "Mundo"
texto3 = """Esto es
una cadena
multilínea"""
⚠️ Inmutable significa que no se pueden modificar los caracteres de una cadena ya creada; en su lugar, se generan nuevas cadenas al aplicar operaciones.
2️⃣ Acceso a los elementos de una cadena
Dado que una cadena es una secuencia, podemos acceder a sus caracteres mediante índices. Cada carácter tiene asociado un índice que permite acceder a él.
- El índice comienza en 0 (primer carácter).
- Se pueden usar índices negativos para contar desde el final. El índice del último caracter de la cadeba es -1.

palabra = "Python"
print(palabra[0]) # P
print(palabra[2]) # t
print(palabra[-1]) # n
3️⃣ Secuencias de escape en cadenas
En Python, las cadenas de texto pueden incluir secuencias de escape, que son combinaciones especiales de caracteres precedidas por una barra invertida (\).
Estas secuencias permiten representar caracteres que no se pueden escribir directamente en la cadena (como saltos de línea, tabulaciones o comillas) o que tendrían un significado ambiguo.
Las secuencias de escape más comunes son:
\nsalto de línea\tTabulación (8 espacios)\\Back slash\'Comilla simple (')\"Comilla doble (")\uxxxxCaracter unicode
# Comillas dentro de una cadena
frase = "Ella dijo: \"Python es genial\""
print(frase)
# Ella dijo: "Python es genial"
# Saltos de línea y tabulación
texto = "Linea 1\nLinea 2\n\tCon tabulación"
print(texto)
# Linea 1
# Linea 2
# Con tabulación
# Rutas de Windows
ruta = "C:\\Users\\Alumno\\Documentos"
print(ruta)
# C:\Users\Alumno\Documentos
# Unicode
print("\u00F1") # ñ
print("\U0001F602") # 😂
4️⃣ Subcadenas (slicing)
El slicing permite obtener partes de la cadena usando la notación [inicio:fin:paso].
texto = "Programación"
print(texto[1:7]) # 'rogram'
print(texto[:7]) # 'Program'
print(texto[4:]) # 'ramación'
print(texto[::2]) # 'Pormcó' (salta de 2 en 2)
print(texto[0:6:3]) # 'Pg' (salta de 3 en 3)
5️⃣ Operaciones con cadenas
Python permite realizar distintas operaciones entre cadenas:
🟩 Concatenación (unir)
a = "Hola"
b = "Mundo"
print(a + " " + b) # Hola Mundo
🟦 Repetición
print("Ha" * 3) # HaHaHa
🟨 Comprobar pertenencia
frase = "Aprender Python es divertido"
print("Python" in frase) # True
print("Java" not in frase) # True
6️⃣ Comparación de cadenas
🟩 Comparación con operadores relacionales
Las cadenas se pueden comparar con los operadores relacionales (==, !=, <, >, <=, >=).
La comparación se hace carácter por carácter siguiendo el orden Unicode (lo que implica que las mayúsculas y minúsculas tienen distinto valor).
print("hola" == "hola") # True
print("Hola" == "hola") # False (mayúsculas ≠ minúsculas)
print("abc" < "abd") # True (compara letra por letra)
print("zorro" > "avion") # True ("z" > "a" en Unicode)
Esto significa que "Hola" y "hola" no son iguales, aunque visualmente lo parezcan, porque el código Unicode de "H" (72) es distinto del de "h" (104).
🟦 Operadores de pertenencia en cadenas
Los operadores in y not in permiten comprobar si una subcadena se encuentra dentro de otra cadena.
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
in | Devuelve True si la subcadena está presente. | "py" in "python" | True |
not in | Devuelve True si la subcadena no está presente. | "java" not in "python" | True |
texto = "Python es genial"
print("Python" in texto) # True (está al inicio)
print("genial" in texto) # True (está al final)
print("Java" not in texto) # True (no aparece en la cadena)
print("PYTHON" in texto) # False (sensible a mayúsculas)
La comparación de pertenencia en cadenas también es sensible a mayúsculas y minúsculas, al igual que los operadores relacionales.
7️⃣ Funciones de cadenas
Las cadenas de texto en Python (str) disponen de una gran variedad de métodos integrados que permiten transformarlas, analizarlas y darles formato. Estos métodos se aplican directamente sobre la cadena y devuelven un nuevo resultado, ya que las cadenas son inmutables (no se modifican en el lugar).
A continuación se describen algunos de los métodos más utilizados con ejemplos.