Sugerencia: Use gráficos
para establecer el tono del
discurso.
CADENAS DE CARACTERES EN
PYTHON
LSI. VERÓNICA FREIRE AVILÉS, MSIG
Strings en Python
Los cadenas (o strings) son un tipo de datos compuestos por
secuencias de caracteres que representan texto.
Estas cadenas de texto son de tipo str y se delimitan mediante
el uso de comillas simples o dobles.
El intérprete de Python tiene distintas funciones integradas
relacionadas con las cadenas. ➔ len(), la cual nos indica el
número de elementos de un objeto.
En el caso de que el objeto sea una cadena nos indica el
número de caracteres que la componen.
Indexación de Strings
Cada uno de los caracteres de una cadena (incluidos los espacios) tiene
asignado un índice.
Este índice nos permite seleccionar su carácter asociado haciendo referencia a
él entre corchetes ([]) en el nombre de la variable que almacena la cadena
>>> cadena = "Programa en Python"
>>> cadena[0]
'P'
>>> cadena[-1]
'n'
Rebanar Strings
Otra operación que podemos realizar a una cadena es seleccionar solamente una
parte de ella. Para ello se usa la notación [inicio:fin:paso] también en el nombre de la
variable que almacena la cadena, donde:
Inicio: es el índice del primer carácter de la porción de la cadena que queremos
seleccionar.
Fin: es el índice del último carácter no incluido de la porción de la cadena que
queremos seleccionar.
Paso: indica cada cuantos carácteres seleccionamos entre las posiciones de inicio
y fin.
>>> cadena = "Programa en Python"
>>> cadena[Link]
'Programa'
>>> cadena[Link]
'Python'
Rebanar Strings
Algunas consideraciones a tener en cuenta son que, si omitimos las posiciones de inicio o fin, nos
referimos respectivamente a la primera y última posición de la cadena.
Además, omitir el paso es equivalente a indicar que el paso es 1. De este modo las selecciones
anteriores también se podrían realizar del siguiente modo.
>>> cadena = "Programa en Python"
>>> cadena[:8]
'Programa'
>>> cadena[12:]
'Python'
Algunas consideraciones a tener en cuenta es que, si omitimos las posiciones de inicio o fin, nos
referimos respectivamente a la primera y última posición de la cadena.
Además, omitir el paso es equivalente a indicar que el paso es 1. De este modo las
selecciones anteriores también se podrían realizar del siguiente modo.
>>> cadena = "Programa en Python"
>>> cadena[::-1]
'nohtyP ne amargorP'
Operaciones con Strings
Una operación que podemos realizar es la concatenación que consiste en unir
distintas cadenas mediante el uso del signo más (+).
>>> nombre = "Luke"
>>> apellido = "Skywalker"
>>> nombre + " " + apellido
'Luke Skywalker'
También podemos concatenar con el signo de multiplicación (*), que en este
caso significa adjuntarle un determinado número de copias a la cadena.
>>> cadena = 'Python.'
>>> cadena * 4
'[Link].'
Operaciones con Strings
Además, las cadenas presentan la propiedad de inmutabilidad. Esto significa que una vez han sido creadas no pueden
modificarse. En efecto, si intentamos modificar una cadena el intérprete nos indica que a ésta no se pueden asignar
elementos.
>>> cadena = "Pithon"
>>> cadena[1] = 'y'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Sin embargo, aplicando algunos de los conceptos vistos este post sí que podemos llegar a cambiar el contenido de una
cadena.
>>> cadena = "Pithon"
>>> cadena = cadena[0] + "y" + cadena[2:]
>>> cadena
'Python'
Métodos de los Strings
[Link](): este método devuelve una copia de la cadena convirtiendo las letras minúsculas a mayúsculas. El
hecho de que devuelva una copia significa que la variable original no se ve afectada por la operación.
>>> x = "Programa en Python 3"
>>> [Link]()
'PROGRAMA EN PYTHON 3'
>>> x
'Programa en Python 3'
[Link](): devuelve una copia de la cadena convirtiendo las letras mayúsculas a minúsculas.
>>> x = "PROGRAMA EN PYTHON 3"
>>> [Link]()
'programa en python 3'
Métodos de los Strings
[Link](): devuelve una copia de la cadena usando la notación de título.
>>> x = "programa en python 3"
>>> [Link]()
'Programa En Python 3'
[Link](viejo, nuevo): devuelve una copia de la cadena a la cual se le ha
cambiado la primera ocurrencia del carácter especificado en viejo por el
especificado en nuevo.
>>> x = "Programa En Python 3"
>> [Link]("E", "e")
'Programa en Python 3'
Métodos de los Strings
[Link](): devuelve una copia de la cadena a la cual se le han eliminado los espacios del principio.
[Link](): se comporta igual que el anterior, pero para los espacios del final.
>>> x = " Programa en Python "
>>> [Link]()
'Programa en Python '
>>> [Link]()
' Programa en Python'
[Link](sep=None): devuelve una lista de las palabras de la cadena separadas acorde el parámetro sep. Si este
parámetro no se especifica o es None, la cadena se separa teniendo en cuenta los espacios en blanco. Si usamos
el símbolo arroba (@) como separador y nuestra cadena es una dirección de correo electrónico, podemos separar
los nombres de usuario y servidor.
>>> x = "Programa en Python"
>>> [Link]()
['Programa', 'en', 'Python']
>>> email = "[Link]@[Link]"
>>> [Link]('@')
['[Link]', '[Link]']
METODOS DE SUSTITUCION
Reemplazar texto en una cadena
Método: replace(“subcadena a buscar”, “subcadena por la cual reemplazar”)
Retorna: la cadena reemplazada
>>> buscar = "nombre apellido"
>>> reemplazar_por = "Juan Pérez"
>>> print "Estimado Sr. nombre apellido:".replace(buscar, reemplazar_por)
Estimado Sr. Juan Pérez:
Eliminar caracteres a la izquierda y
derecha de una cadena
Método: strip([“caracter”])
Retorna: la cadena sustituida
>>> cadena = " [Link] "
>>> print [Link]()
[Link]
>>> print [Link](' ')
[Link]
Eliminar caracteres a la izquierda de una
cadena
Método: lstrip([“caracter”])
Retorna: la cadena sustituida
>>> cadena = "[Link]"
>>> print [Link]("w." )
[Link]
>>> cadena = " [Link]"
>>> print [Link]()
[Link]
Eliminar caracteres a la derecha de una
cadena
Método: rstrip([“caracter”])
Retorna: la cadena sustituida
>>> cadena = "[Link] "
>>> print [Link]( )
[Link]
Convertir a mayúscula la
primera letra
Método: capitalize()
Retorna: una copia de la cadena con la primera letra en
mayúsculas
>>> cadena = "bienvenido a mi aplicación"
>>> print ([Link]())
Bienvenido a mi aplicación
Convertir mayúsculas a minúsculas y
viceversa
Método: swapcase()
Retorna: una copia de la cadena convertidas las mayúsculas en
minúsculas y viceversa
>>> cadena = "Hola Mundo"
>>> print ([Link]())
hOLA mUNDO
Convertir una cadena en
Formato Título
Método: title()
Retorna: una copia de la cadena convertida
>>> cadena = "hola mundo"
>>> print [Link]()
Hola Mundo
Centrar un texto
Método: center(longitud[, “caracter de relleno”])
Retorna: una copia de la cadena centrada
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print ([Link](50, "="))
===========Bienvenido a mi aplicación============
>>> print ([Link](50, " "))
Bienvenido a mi aplicación
Alinear texto a la izquierda
Método: ljust(longitud[, “caracter de relleno”])
Retorna: una copia de la cadena alineada a la izquierda
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print ([Link](50, "="))
Bienvenido a mi aplicación=======================
Alinear texto a la derecha
Método: rjust(longitud[, “caracter de relleno”])
Retorna: una copia de la cadena alineada a la derecha
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print ([Link](50, "="))
=======================Bienvenido a mi aplicación
>>> print [Link](50, " ")
Bienvenido a mi aplicación
Rellenar un texto anteponiendo
ceros
Método: zfill(longitud)
Retorna: una copia de la cadena rellena con ceros a la
izquierda hasta alcanzar la longitud final indicada
>>> numero_factura = 1575
>>> print (str(numero_factura).zfill(12))
000000001575
Métodos de Búsqueda
Contar cantidad de apariciones de una
subcadena
Método: count(“subcadena”[, posicion_inicio, posicion_fin])
Retorna: un entero representando la cantidad de apariciones de subcadena dentro de
cadena
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print ([Link]("a"))
3
Buscar una subcadena dentro de una
cadena
Método: find(“subcadena”[, posicion_inicio, posicion_fin])
Retorna: un entero representando la posición donde inicia la subcadena dentro de
cadena. Si no la encuentra, retorna -1
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print [Link]("mi")
13
>>> print [Link]("mi", 0, 10)
-1
Métodos de Validación
Saber si una cadena comienza con una
subcadena determinada
Método: startswith(“subcadena”[, posicion_inicio, posicion_fin])
Retorna: True o False
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print [Link]("Bienvenido")
True
>>> print [Link]("aplicación")
False
>>> print [Link]("aplicación", 16)
True
Saber si una cadena finaliza con una
subcadena determinada
Método: endswith(“subcadena”[, posicion_inicio, posicion_fin])
Retorna: True o False
>>> cadena = "bienvenido a mi aplicación".capitalize()
>>> print [Link]("aplicación")
True
>>> print [Link]("Bienvenido")
False
>>> print [Link]("Bienvenido", 0, 10)
True
Saber si una cadena es
alfanumérica
Método: isalnum()
Retorna: True o False
>>> cadena = "pepegrillo 75"
>>> print [Link]()
False
>>> cadena = "pepegrillo"
>>> print [Link]()
True
>>> cadena = "pepegrillo75"
>>> print [Link]()
True
Método: isalpha()
Saber si una
Retorna: True o False
>>> cadena = "pepegrillo 75"
cadena es
>>> print [Link]()
False
alfabética
>>> cadena = "pepegrillo"
>>> print [Link]()
True
>>> cadena = "pepegrillo75"
>>> print [Link]()
False
Saber si una cadena es
numérica
Método: isdigit()
Retorna: True o False
>>> cadena = "pepegrillo 75"
>>> print ([Link]())
False
>>> cadena = "7584"
>>> print ([Link]())
True
>>> cadena = "75 84"
>>> print ([Link]())
False
>>> cadena = "75.84"
>>> print ([Link]())
False
Saber si una cadena contiene solo
minúsculas
Método: islower()
Retorna: True o False
>>> cadena = "pepe grillo"
>>> print [Link]()
True
>>> cadena = "Pepe Grillo"
>>> print [Link]()
False
>>> cadena = "Pepegrillo"
>>> print [Link]()
False
>>> cadena = "pepegrillo75"
>>> print [Link]()
True
Saber si una cadena contiene solo
mayúsculas
Método: isupper()
Retorna: True o False
>>> cadena = "PEPE GRILLO"
>>> print [Link]()
True
>>> cadena = "Pepe Grillo"
>>> print [Link]()
False
>>> cadena = "Pepegrillo"
>>> print [Link]()
False
>>> cadena = "PEPEGRILLO"
>>> print [Link]()
True
Saber si una cadena contiene solo
espacios en blanco
Método: isspace()
Retorna: True o False
>>> cadena = "pepe grillo"
>>> print [Link]()
False
>>> cadena = " "
>>> print [Link]()
True
Saber si una cadena tiene Formato De
Título
Método: istitle()
Retorna: True o False
>>> cadena = "Pepe Grillo"
>>> print [Link]()
True
>>> cadena = "Pepe grillo"
>>> print [Link]()
False
Formatear Strings: Método format()
Una alternativa a la concatenación de cadenas es el uso del método format(). Este
método devuelve una copia de la cadena a la que se le han sustituido las posiciones
que contienen llaves ({}) por los argumentos del método. Esta sustitución se realiza
por defecto en el mismo orden de los argumentos.
>>> "Mi {} se llama {} y tiene {} años".format("perro", "Ashley", "tres")
'Mi perro se llama Ashley y tiene tres años'
También podemos referenciar los argumentos del método por su posición (siendo el
índice del primero 0) o mediante un nombre.
>>> "Mi {1} se llama {2} y tiene {0} años".format("tres", "perro", "Ashley")
'Mi perro se llama Ashley y tiene tres años'
>>> "Mi {animal} se llama {nombre} y tiene {edad} años".format(animal="perro",
nombre="Ashley", edad="tres")
'Mi perro se llama Ashley y tiene tres años'
Formatear Strings: Método format()
Este método también nos permite especificar el número de
decimales que se muestran en números de coma flotante.
>>> from math import pi
>>> "El numero pi es {}".format(pi)
'El numero pi es 3.141592653589793'
>>> "El numero pi es {n:1.4f}".format(n=pi)
'El numero pi es 3.1416'
f-strings
El método format() puede producir código un poco
engorroso de leer cuando tratamos con strings largos que
contienen múltiples parámetros. Es por ello que en Python 3.6
se añadieron los f-strings.
Los f-strings son cadenas de texto con una f al inicio y
expresiones entre llaves que se sustituyen por sus valores.
>>> animal = "perro"
>>> nombre = "Ashley"
>>> edad = "tres"
>>> f"Mi {animal} se llama {nombre} y tiene {edad} años"
'Mi perro se llama Ashley y tiene tres años'