Cadenas
Python para Todos
es.py4e.com
El Tipo de dato
Cadena str1 = "Hola"
str2 = 'ahí'
• Una cadena (string) es una secuencia
bob = str1 + str2
de caracteres. print(bob)
# Holaahí
• Una cadena utiliza comillas str3 = '123'
'Hola' o "Hola" str3 = str3 + 1
# Traceback (most recent call
• Para las cadenas, + significa last): File "<stdin>", line 1,
“concatenar”. in <module>
TypeError: cannot concatenate
• Cuando una cadena contiene números, 'str' and 'int' objects
aún sigue siendo una cadena. x = int(str3) + 1
print(x)
• Podemos convertir números dentro de # 124
una cadena, a enteros, utilizando int()
Leyendo y nombre = input('Ingresa:')
# Ingresa:Chuck
convirtiendo datos print(nombre)
# Chuck
• Preferimos leer datos de entrada manzana = input('Ingresa:')
utilizando cadenas y después # Ingresa:100
analizar y convertir los datos x = manzana – 10
conforme sea necesario # Traceback (most recent call
last): File "<stdin>", line 1,
• Esto nos da más control sobre in <module>
TypeError: unsupported operand
situaciones de error y/o datos de
type(s) for -: 'str' and 'int'
entrada del usuario incorrectos
x = int(manzana) – 10
print(x)
• Los números como datos de entrada
# 90
deben ser convertidos de cadenas a
enteros
Buscando dentro de una
Cadena
•Podemos obtener cualquier b a n a n a
carácter en una cadena usando un 0 1 2 3 4 5
índice especificado en corchetes
fruta = 'banana'
•El valor del índice debe ser un letra = fruta[1]
print(letra)
entero y comienza desde el cero # a
x = 3
•El valor del índice puede ser una w = fruta[x - 1]
print(w)
expresión que se ha calculado # n
Un carácter muy lejano
•Vas a obtener un error de zot = 'abc'
Python si tratas de print(zot[5])
acceder un índice más # Traceback (most recent call
last): File "<stdin>", line
allá del final de la cadena. 1, in <module>
IndexError: string index out
•Así que sé cuidadoso of range
cuando construyas
valores de índices y
rebanadas
Las Cadenas tienen Tamaño
b a n a n a
La función nativa len nos
0 1 2 3 4 5
retorna el tamaño de una
cadena
fruta = 'banana'
print(len(fruta))
# 6
Función len
fruta = 'banana' Una función es un
x = len(fruta) código almacenado que
print(x) utilizamos. Una función
# 6 toma datos de entrada y
produce datos de salida.
'banana’ Función 6
(un número)
(una cadena) len()
Función len
fruta = 'banana' Una función es un
x = len(fruta) código almacenado que
print(x) utilizamos. Una función
# 6 toma datos de entrada y
produce datos de salida.
def len(inp):
bla
'banana’ bla 6
(una cadena) for x in y:
bla
(un número)
bla
Recorriendo una Cadena
Utilizando una sentencia
while, una variable de fruta = 'banana’
0b
iteración, y la función indice = 0 1a
len, podemos construir while indice < len(fruta): 2n
un bucle para mirar cada letra = fruta[indice] 3a
print(indice, letra) 4n
una de las letras de una indice = indice + 1
cadena de forma 5a
individual
Recorriendo una Cadena
•Un bucle finito utilizando b
una sentencia for es fruta = 'banana' a
mucho más elegante for letra in fruta: n
print(letra) a
•La variable de iteración es n
completamente manejada a
por el bucle for
Recorriendo una Cadena
•Un bucle finito
utilizando una fruta = 'banana'
b
for letra in fruta :
sentencia for es mucho print(letra) a
más elegante n
a
•La variable de iteración indice = 0
while indice < len(fruta) :
n
es completamente letra = fruta[indice]
a
manejada por el bucle print(letra)
for indice = indice + 1
Recorriendo y Contando
Este es un bucle sencillo
que itera a través de cada
letra en una cadena y palabra = 'banana’
cuenta el número de contador = 0
veces que el bucle for letra in palabra :
encuentra el carácter 'a' if letra == 'a' :
contador = contador + 1
print(contador)
Analizando in más a fondo
• La variable de iteración
“itera” a través de una
secuencia (un conjunto Variable de Cadena de seis
ordenado) iteración caracteres
• El bloque (cuerpo) de
código es ejecutado una vez for letra in 'banana' :
para cada valor en (in) la
print(letra)
secuencia
• La variable de iteración se
mueve a través de todos los
valores en (in) la secuencia
Sí No b a n a n a
Hecho? Avanzar letra
print(letra)
for letra in 'banana' :
print(letra)
La variable de iteración “itera” a través de la cadena y el bloque
(cuerpo) de código es ejecutado para cada valor en (in) la secuencia
Más Operaciones de
Cadenas
Rebanado de
Cadenas M o n t y P y t h o n
• También podemos mirar a 0 1 2 3 4 5 6 7 8 9 10 11
cualquier sección continua de
una cadena utilizando el
operador dos puntos s = 'Monty Python'
print(s[0:4])
• El segundo número es un # Mont
número más allá del final de la print(s[6:7])
rebanada - “hasta pero no # P
incluyendo”
print(s[6:20])
• Si el segundo número está más # Python
allá del final de la cadena,
entonces termina al final
Rebanado de
Cadenas M o n t y P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11
Si dejamos en blanco el s = 'Monty Python'
primer o el último print(s[:2])
número de la rebanada, # Mo
print(s[8:])
se asume que es el inicio
# thon
o el final de la cadena, print(s[:])
respectivamente # Monty Python
Concatenación de Cadenas
a = 'Hola'
b = a + 'Ahí'
Cuando el operador + print(b)
es aplicado a una # HolaAhí
cadena, significa c = a + ' ' + 'Ahí'
“concatenación” print(c)
# Hola Ahí
Utilizando in como Operador
Lógico
• La palabra in puede ser fruta = 'banana'
'n' in fruta
utilizada para revisar si
# True
una cadena se encuentra 'm' in fruta
“en (in)” otra cadena # False
'nan' in fruta
• La expresión in es una # True
if 'a' in fruta :
expresión lógica que
print('Encontrada!')
retorna True o False y
puede ser utilizada una # Encontrada!
sentencia if
• Python tiene un número de
funciones de cadenas que están
Librería String
en la librería string (cadena)
saludo = 'Hola Bob'
• Esas funciones ya están zap = saludo.lower()
previamente construidas dentro print(zap)
de cada cadena – las invocamos # hola bob
al agregar la función a la print(saludo)
variable de la cadena # Hola Bob
print('Hola Ahí'.lower())
• Esas funciones no modifican la
# hola ahí
cadena original, sino que
retornan una nueva cadena que
ha sido modificada
cosa = 'Hola mundo'
type(cosa)
#<class 'str'>
dir(cosa)
['capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust',
'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',
'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper',
'zfill']
https://docs.python.org/es/3.11/library/stdtypes.html#string-methods
Librería String
str.capitalize() str.replace(old, new[, count])
str.center(width[, fillchar]) str.lower()
str.endswith(suffix[, start[, end]]) str.rstrip([chars])
str.find(sub[, start[, end]]) str.strip([chars])
str.lstrip([chars]) str.upper()
Buscando una Cadena
• Utilizamos la función find() para b a n a n a
buscar una subcadena dentro de 0 1 2 3 4 5
otra cadena
• find() encuentra la primer ocurrencia fruta = 'banana'
pos = fruta.find('na')
de la subcadena print(pos)
# 2
• Si la subcadena no se encuentra, aa = fruta.find('z')
find() regresa -1 print(aa)
# -1
• Recuerda que las posiciones de una
cadena comienzan en cero.
Convirtiéndo Todo a MAYÚSCULAS
• Puedes crear una copia de una
cadena en minúsculas o
mayúsculas saludo = 'Hola Bob'
• Frecuentemente cuando nnn = saludo.upper()
print(nnn)
estamos buscando una cadena
# HOLA BOB
utilizando find() primero
www = saludo.lower()
convertimos la cadena a
print(www)
minúsculas, de modo que
# hola bob
podemos buscar una cadena
sin importar si está en
mayúsculas o minúsculas
Buscar y Reemplazar
• La función replace() es
como una operación
“buscar y reemplazar” saludo = 'Hola Bob'
en un editor de texto ncad = saludo.replace('Bob','Jane')
print(ncad)
• Esta función reemplaza # Hola Jane
ncad = saludo.replace('o','X')
todas las ocurrencias print(ncad)
de una cadena de # HXla BXb
búsqueda con una
cadena de reemplazo
Removiendo Espacios en Blanco
• A veces queremos tomar
una cadena y remover los
espacios en blanco al saludo = ' Hola Bob '
inicio y/o al final saludo.lstrip()
# 'Hola Bob '
• lstrip() y rstrip() remueven saludo.rstrip()
los espacios en blanco a la # ' Hola Bob'
izquierda o a la derecha saludo.strip()
# 'Hola Bob'
• strip() remueve espacios
en blanco tanto al inicio
como al final de la cadena
Prefijos
linea = 'Que tengas un buen día'
linea.startswith('Que')
# True
linea.startswith('q')
# False
Análisis y
21 31 Extracción
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
datos = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
arrpos = datos.find('@')
print(arrpos)
# 21
esppos = datos.find(' ', arrpos)
print(esppos)
# 31
direccion = datos[arrpos+1 : esppos]
print(direccion)
# uct.ac.za
Dos tipos de Cadenas
Python 2.7.10 Python 3.x
x = ' 이광춘 ' x = ' 이광춘 '
type(x) type(x)
#<type 'str'> #<class 'str'>
x = u' 이광춘 ' x = u' 이광춘 '
type(x) type(x)
#<type 'unicode'> #<class 'str'>
En Python 3, todas las cadenas son Unicode
Resumen
• Tipo Cadena (String) • Operaciones de Cadenas
• Leer/Convertir • Librería String
• Indexando cadenas [] • Comparación de Cadenas
• Rebanando cadenas [2:4] • Búsqueda de Cadenas
• Atravesando cadenas con • Reemplazando texto
for y while • Removiendo espacios
• Concatenando cadenas con +
Agradecimientos / Contribuciones
Las diapositivas están bajo el Copyright 2010- Charles R. Severance ( ...
www.dr-chuck.com) de la Escuela de Informática de la Universidad de
Michigan y open.umich.edu, y están disponibles públicamente bajo una
Licencia Creative Commons Attribution 4.0. Favor de mantener esta última
diapositiva en todas las copias del documento para cumplir con los
requerimientos de atribución de la licencia. Si haces un cambio, siéntete
libre de agregar tu nombre y organización a la lista de contribuidores en
esta página conforme sean republicados los materiales.
Desarrollo inicial: Charles Severance, Escuela de Informática de la
Universidad de Michigan.
Traducción al Español por Juan Carlos Pérez Castellanos - 2020-05-02