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.
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#
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:
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:
mensaje = """Estimado cliente:
Su pedido ha sido enviado.
Gracias por su compra."""
print(mensaje)Estimado cliente:
Su pedido ha sido enviado.
Gracias por su compra.Caracteres especiales#
Algunos caracteres se escriben con una barra invertida:
| Escritura | Significa |
|---|---|
\n | Salto de línea |
\t | Tabulación |
\" | Una comilla doble literal |
\' | Una comilla simple literal |
\\ | Una barra invertida literal |
print("Primera línea\nSegunda línea")
print("Nombre:\tErwin")
print("Dijo \"hola\" al entrar")Primera línea
Segunda línea
Nombre: Erwin
Dijo "hola" al entrarUnir y repetir#
nombre = "Erwin"
apellido = "García"
completo = nombre + " " + apellido
print(completo)
print("-" * 30)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#
print(len("Python"))
print(len("")) # la cadena vacía mide cero
print(len("hola mundo")) # los espacios cuentan6
0
10Acceder a los caracteres#
Cada carácter tiene una posición, llamada índice, y la numeración empieza en cero:
palabra = "Python"
# 012345
# -654321
print(palabra[0]) # el primero
print(palabra[3])
print(palabra[-1]) # el último
print(palabra[-2]) # el penúltimoP
h
n
oLos í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:
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 enteraProgra
mación
Progra
ación
ProgramaciónLa 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:
print("abcdefghij"[::2]) # de dos en dos
print("hola"[::-1]) # paso negativo: invierte la cadenaacegi
alohLas cadenas no se pueden modificar#
palabra = "Python"
palabra[0] = "J"TypeError: 'str' object does not support item assignmentSe 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:
palabra = "Python"
nueva = "J" + palabra[1:]
print(nueva)
print(palabra) # la original sigue intactaJython
PythonBuscar dentro de una cadena#
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 apareceTrue
False
9
-1
4El operador in es la forma más limpia de preguntar si un texto contiene otro, y lo usarás constantemente con condiciones.
Comparar cadenas#
print("hola" == "hola")
print("hola" == "Hola") # distingue mayúsculas
print("manzana" < "pera") # orden alfabéticoTrue
False
True