Saltar al contenido
🐍 Curso de Python
/

Módulo 1 · Lección 3 de 59

Cadenas de texto

Crear textos, unirlos, medirlos, acceder a sus letras y cortarlos en trozos. El tipo de dato que más vas a manejar.

⏱ 14 min de lectura

Una cadena (str, de string) es un texto: una secuencia de caracteres. Es el tipo de dato con el que más vas a trabajar, porque todo lo que el usuario escribe y todo lo que lees de un fichero llega como texto.

Crear cadenas#

python
nombre = "Erwin"
apellido = 'García'

Las comillas simples y las dobles son intercambiables. Elige unas y sé consistente; la convención más extendida es usar dobles. Poder elegir es útil cuando el texto contiene comillas:

python
frase = "Ella dijo 'hasta luego' y se fue"
otra = 'El botón se llama "Aceptar"'

Para textos de varias líneas se usan tres comillas:

python
mensaje = """Estimado cliente:

Su pedido ha sido enviado.
Gracias por su compra."""

print(mensaje)
Salida en pantalla
Estimado cliente:

Su pedido ha sido enviado.
Gracias por su compra.

Caracteres especiales#

Algunos caracteres se escriben con una barra invertida:

EscrituraSignifica
\nSalto de línea
\tTabulación
\"Una comilla doble literal
\'Una comilla simple literal
\\Una barra invertida literal
python
print("Primera línea\nSegunda línea")
print("Nombre:\tErwin")
print("Dijo \"hola\" al entrar")
Salida en pantalla
Primera línea
Segunda línea
Nombre:    Erwin
Dijo "hola" al entrar

Unir y repetir#

python
nombre = "Erwin"
apellido = "García"

completo = nombre + " " + apellido
print(completo)

print("-" * 30)
Salida en pantalla
Erwin García
------------------------------

El + entre cadenas se llama concatenación y el * repite. Fíjate en que hay que poner el espacio a mano: "Erwin" + "García" daría ErwinGarcía.

Longitud#

python
print(len("Python"))
print(len(""))          # la cadena vacía mide cero
print(len("hola mundo"))  # los espacios cuentan
Salida en pantalla
6
0
10

Acceder a los caracteres#

Cada carácter tiene una posición, llamada índice, y la numeración empieza en cero:

python
palabra = "Python"
#          012345
#         -654321

print(palabra[0])     # el primero
print(palabra[3])
print(palabra[-1])    # el último
print(palabra[-2])    # el penúltimo
Salida en pantalla
P
h
n
o

Los índices negativos cuentan desde el final, y son comodísimos: palabra[-1] es siempre el último carácter, sin tener que saber cuánto mide la cadena.

Cortar trozos: el rebanado#

La sintaxis es cadena[inicio:fin], y el final no se incluye:

python
texto = "Programación"
#        0123456789...

print(texto[0:6])     # del 0 al 5
print(texto[6:])      # del 6 hasta el final
print(texto[:6])      # desde el principio hasta el 5
print(texto[-5:])     # los cinco últimos
print(texto[:])       # la cadena entera
Salida en pantalla
Progra
mación
Progra
ación
Programación

La regla de que el final no se incluye parece incómoda, pero tiene una ventaja: texto[0:6] y texto[6:] reconstruyen el original sin solapamiento ni huecos, y fin - inicio te da directamente cuántos caracteres coges.

También hay un tercer valor, el paso:

python
print("abcdefghij"[::2])    # de dos en dos
print("hola"[::-1])         # paso negativo: invierte la cadena
Salida en pantalla
acegi
aloh

Las cadenas no se pueden modificar#

python
palabra = "Python"
palabra[0] = "J"
Salida en pantalla
TypeError: 'str' object does not support item assignment

Se dice que las cadenas son inmutables. No es una limitación molesta, es una garantía: si pasas una cadena a una función, nadie puede cambiártela por detrás. Lo que sí puedes hacer es crear una cadena nueva:

python
palabra = "Python"
nueva = "J" + palabra[1:]
print(nueva)
print(palabra)    # la original sigue intacta
Salida en pantalla
Jython
Python

Buscar dentro de una cadena#

python
frase = "Aprender Python es divertido"

print("Python" in frase)        # ¿está contenido?
print("Java" in frase)
print(frase.find("Python"))     # ¿en qué posición empieza?
print(frase.find("Java"))       # -1 significa "no está"
print(frase.count("e"))         # cuántas veces aparece
Salida en pantalla
True
False
9
-1
4

El operador in es la forma más limpia de preguntar si un texto contiene otro, y lo usarás constantemente con condiciones.

Comparar cadenas#

python
print("hola" == "hola")
print("hola" == "Hola")       # distingue mayúsculas
print("manzana" < "pera")     # orden alfabético
Salida en pantalla
True
False
True