Cadenas o strings en Python
Vemos todo sobre las cadenas de caracteres o strings en Python
Continuamos nuestro curso de Python para principiantes, vimos en la anterior entrega el Polimorfismo en Python y en esta vamos a profundizar en las cadenas de caracteres o strings en python.
El texto es un tipo de datos de cadena. Cualquier tipo de datos escrito como texto es una cadena. Todos los datos entre comillas simples, dobles o triples son cadenas. Existen diferentes métodos de cadena y funciones integradas para manejar tipos de datos de cadena. Para verificar la longitud de una cadena, use el método len()
.
Crear una cadena
letra = 'P' # Una cadena puede ser un solo carácter o un montón de textos
print(letra) # P
print(len(letra)) # 1
saludo = '¡Hola, mundo!' # Una cadena podría ser una comilla simple o doble, "¡Hola, Mundo!"
print(saludo) # ¡Hola, mundo!
print(len(saludo)) # 13
frase = "Espero que estés disfrutando del curso de Python"
print(frase)
La cadena multilínea se crea usando comillas triples simples (»’) o triples dobles («»»). Consulte el ejemplo a continuación.
cadena_multilinea = '''Soy profesor y disfruto enseñando.
No encontré nada tan gratificante como capacitar a la gente.
Por eso he creado este curso de python.'''
print(cadena_multilinea)
# Otra forma de hacer lo mismo
string_multilinea = """Soy profesor y disfruto enseñando.
No encontré nada tan gratificante como capacitar a la gente.
Por eso he creado este curso de python."""
print(string_multilinea)
Concatenación de cadenas
Podemos conectar cadenas juntas. Combinar o conectar cadenas se llama concatenación. Vea el ejemplo a continuación:
nombre = "Alejandra"
apellido = "Palomo"
espacio = " "
nombre_completo = nombre + espacio + apellido
print(nombre_completo) # Alejandra Palomo
# Comprobación de la longitud de una cadena mediante la función len() incorporada
print(len(nombre_completo)) # 16
print(len(apellido)) # 6
print(len(nombre) > len(apellido)) # True
print(len(nombre_completo)) # 16
Secuencias de escape en cadenas
En Python y otros lenguajes de programación \
seguido de un carácter es una secuencia de escape. Veamos los caracteres de escape más comunes:
\n
: nueva línea\t
: Tabulador significa (8 espacios)\\
: barra invertida\'
: comillas simple (‘)\"
: comillas dobles («)
Ahora, veamos el uso de las secuencias de escape anteriores con ejemplos.
print('Espero que estén disfrutando del\nCurso de Python') # salto de línea
print('Días\tTemas\tEjercicios') # añadir espacio de tabulación o 4 espacios
print('Día 1\t3\t5')
print('Día 2\t3\t5')
print('Día 3\t3\t5')
print('Día 4\t3\t5')
print('Esto es un símbolo de barra invertida (\\)') # Para escribir una barra invertida
print('En todos los lenguajes de programación se empieza por \"¡Hola, Mundo!\"') # para escribir una comilla doble dentro de una comilla simple
Salida:
Espero que estén disfrutando del Curso de Python Días Temas Ejercicios Día 1 3 5 Día 2 3 5 Día 3 3 5 Día 4 3 5 Esto es un símbolo de barra invertida (\) En todos los lenguajes de programación se empieza por "¡Hola, Mundo!"
Formateo de cadenas en Python
Formato de cadena de estilo antiguo (operador %)
En Python hay muchas formas de formatear cadenas. En esta sección, cubriremos algunos de ellos. El operador «%
» se utiliza para formatear un conjunto de variables encerradas en una tupla (una lista de tamaño fijo), junto con una cadena de formato, que contiene texto normal junto con «especificadores de argumento«, símbolos especiales como «%s» , «%d», «%f», «%.número de dígitosf».
- %s – Cadena (o cualquier objeto con una representación de cadena, como los números)
- %d – Enteros
- %f – Números flotantes
- «%.number of digitsf» – Números de punto flotante con precisión fija
# Sólo cadenas
nombre = 'Alejandra'
apellido = 'Palomo'
lenguaje = 'Python'
cadena_formateada = 'Soy %s %s. Enseño %s' %(nombre, apellido, lenguaje)
print(cadena_formateada)
# Cadenas y números
radio = 10
pi = 3.14
area = pi * radio ** 2
string_formateado = 'El área del círculo con un radio %d es %.2f.' %(radio, area) # 2 se refiere a los 2 dígitos significativos después del punto
print(string_formateado)
librerias_python = ['Pandas', 'Django', 'NumPy', 'Flask', 'Matplotlib']
cadena_formateada2 = 'Las siguientes son bibliotecas de python:%s' % (librerias_python)
print(cadena_formateada2) # "Las siguientes son bibliotecas python:['Pandas', 'Django', 'NumPy', 'Flask', 'Matplotlib']"
Salida:
Soy Alejandra Palomo. Enseño Python El área del círculo con un radio 10 es 314.00. Las siguientes son bibliotecas de python:['Pandas', 'Django', 'NumPy', 'Flask', 'Matplotlib']
Nuevo formato de cadena de estilo (str.format)
Este formato se introdujo en la versión 3 de Python.
nombre = 'Alejandra'
apellido = 'Palomo'
lenguaje = 'Python'
cadena_formateada = 'Soy {} {}. Enseño {}'.format(nombre, apellido, lenguaje)
print(cadena_formateada)
x = 5
z = 2
print('{} + {} = {}'.format(x, z, x + z))
print('{} - {} = {}'.format(x , z, x - z))
print('{} * {} = {}'.format(x , z, x * z))
print('{} / {} = {:.2f}'.format(x , z, x / z)) # lo limita a dos dígitos después del decimal
print('{} % {} = {}'.format(x , z, x % z))
print('{} // {} = {}'.format(x , z, x // z))
print('{} ** {} = {}'.format(x , z, x ** z))
s = "Los números son {a} y {b}".format(a=8, b=3)
print(s) #Los números son 8 y 3
# Cadenas y números
radio = 10
pi = 3.14
area = pi * radio ** 2
cadena_formateada2 = 'El área de un círculo con radio {} es {:.2f}'.format(radio, area) # 2 dígitos después del decimal
print(cadena_formateada2)
Soy Alejandra Palomo. Enseño Python 5 + 2 = 7 5 - 2 = 3 5 * 2 = 10 5 / 2 = 2.50 5 % 2 = 1 5 // 2 = 2 5 ** 2 = 25 Los números son 8 y 3 El área de un círculo con radio 10 es 314.00
Interpolación de cadenas (f-strings) Python 3.6+
Otro nuevo formato de cadena es la interpolación de cadenas, f-strings. Las cadenas comienzan con f y podemos inyectar los datos en sus posiciones correspondientes.
x = 6
z = 4
print(f'{x} + {z} = {x + z}')
print(f'{x} - {z} = {x - z}')
print(f'{x} * {z} = {x * z}')
print(f'{x} / {z} = {x / z:.2f}')
print(f'{x} % {z} = {x % z}')
print(f'{x} // {z} = {x // z}')
print(f'{x} ** {z} = {x ** z}')
6 + 4 = 10 6 - 4 = 2 6 * 4 = 24 6 / 4 = 1.50 6 % 4 = 2 6 // 4 = 1 6 ** 4 = 1296
Cadenas de Python como secuencias de caracteres
Las cadenas de Python son secuencias de caracteres y comparten sus métodos básicos de acceso con otras secuencias de objetos ordenadas de Python: listas y tuplas. La forma más sencilla de extraer caracteres individuales de cadenas (y miembros individuales de cualquier secuencia) es desempaquetarlos en las variables correspondientes.
Desempaquetar caracteres
variable = 'Cadenas'
a,b,c,d,e,f,e = variable # desempaquetar caracteres de secuencia en variables
print(a) # C
print(b) # a
print(c) # d
print(d) # e
print(e) # n
print(f) # a
print(e) # s
Acceso a caracteres en cadenas por índice
En la programación, el conteo comienza desde cero. Por lo tanto, la primera letra de una cadena tiene un índice cero y la última letra de una cadena es la longitud de una cadena menos uno.
['P', 'y', 't, 'h', 'o', 'n' ] 0 1 2 3 4 5
color = 'Rojo'
primera_letra = color[0]
print(primera_letra) # R
segunda_letra = color[1]
print(segunda_letra) # o
ultimo_indice = len(color) - 1
ultima_letra = color[ultimo_indice]
print(ultima_letra) # o
Si queremos comenzar desde el extremo derecho, podemos usar la indexación negativa. -1 es el último índice.
color = 'Rojo'
ultima_letra = color[-1]
print(ultima_letra) # o
penultima_letra = color[-2]
print(penultima_letra) # j
Dividir cadenas de Python (Slicing)
En python podemos dividir cadenas en subcadenas.
color = 'Amarillo'
tres_primeras = color[0:3] # empieza en índice cero y hasta 3 pero no incluye 3
print(tres_primeras) #Ama
tres_ultimas = color[5:8]
print(tres_ultimas) # llo
# Otra forma
tres_ultimas2 = color[-5:]
print(tres_ultimas2) # llo
tres_ultimas3 = color[5:]
print(tres_ultimas3) # llo
Invertir una cadena
Podemos invertir cadenas fácilmente en python.
saludo = '¡Hola, mundo!'
print(saludo[::-1]) # !dlroW ,olleH
Saltar caracteres al cortar
Es posible omitir caracteres durante el corte pasando el argumento de paso al método de corte.
color = 'Amarillo'
resultado = color[0:8:2]
print(resultado) # Aail
Métodos de cadena
Hay muchos métodos de cadena que nos permiten formatear cadenas. Vea algunos de los métodos de cadena en el siguiente ejemplo:
capitalize()
Convierte el primer carácter de la cadena en letra mayúscula.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(challenge.capitalize()) # 'métodos de cadena que nos permiten formatear cadenas'
count()
Devuelve ocurrencias de una subcadena en la cadena, count(subcadena, inicio, final)
. El inicio es un índice inicial para contar y el final es el último índice para contar.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.count('m')) # 3
print(mi_string.count('m', 25, 35)) # 1
print(mi_string.count('en')) # 2
endswith()
Comprueba si una cadena termina con un final específico.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.endswith('rings')) # Verdadero
print(mi_string.endswith('atear')) # Falso
expandtabs()
Reemplaza el carácter de tabulación por espacios, el tamaño de tabulación predeterminado es 8. Toma el argumento de tamaño de tabulación.
mi_string = 'P\te\tr\td\to\tn\ta'
mi_string2 = 'métodos\tde\tcadena\tque\tnos\tpermiten\tformatear\tstrings'
print(mi_string.expandtabs())
print(mi_string.expandtabs(10))
print(mi_string2.expandtabs())
print(mi_string2.expandtabs(10))
Salida:
P e r d o n a P e r d o n a métodos de cadena que nos permiten formatear strings métodos de cadena que nos permiten formatear strings
find()
Devuelve el índice de la primera aparición de una subcadena, si no se encuentra devuelve -1.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.find('de')) # 8
print(mi_string.find('en')) # 14
rfind()
Devuelve el índice de la última aparición de una subcadena, si no se encuentra devuelve -1.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.rfind('de')) # 13
print(mi_string.rfind('en')) # 32
format()
Formatea la cadena para que salga más agradable.
nombre = 'Alejandra'
apellido = 'Palomo'
edad = 35
trabajo = 'profesora'
pais = 'Portugal'
frase = 'Soy {} {}. Tengo {} años. Soy {}. Vivo en {}.'.format(nombre, apellido, edad, trabajo, pais)
print(frase) # Soy Alejandra Palomo. Tengo 35 años. Soy profesora. Vivo en Portugal.
radio = 10
pi = 3.14
area = pi * radio ** 2
result = 'El área de un círculo de radio {} es {}'.format(str(radio), str(area))
print(result) # El área de un círculo de radio 10 es 314
index()
Devuelve el índice más bajo de una subcadena, los argumentos adicionales indican el índice inicial y final (predeterminado 0 y longitud de cadena – 1). Si no se encuentra la subcadena, genera un valueError.
mi_string = 'métodos de cadena que nos permiten formatear strings'
sub_cadena = 'en'
print(mi_string.index(sub_cadena)) # 14
print(mi_string.index(sub_cadena, 33)) # error
rindex()
Devuelve el índice más alto de una subcadena, los argumentos adicionales indican el índice inicial y final (predeterminado 0 y longitud de la cadena – 1).
mi_string = 'métodos de cadena que nos permiten formatear strings'
sub_cadena = 'en'
print(mi_string.rindex(sub_cadena)) # 32
print(mi_string.rindex(sub_cadena, 33)) # error
isalnum()
Comprueba caracteres alfanuméricos.
mi_string = 'métodosdecadenaquenospermitenformatearstrings'
print(mi_string.isalnum()) # Verdadero
mi_string = '85métodosdecadena'
print(mi_string.isalnum()) # Verdadero
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.isalnum()) # Falso, el espacio no es un carácter alfanumérico
mi_string = '85 métodos de cadena que nos permiten formatear strings'
print(mi_string.isalnum()) # Falso
isalpha()
Comprueba si todos los elementos de cadena son caracteres alfabéticos (az y AZ).
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.isalpha()) # Falso, el espacio vuelve a estar excluido
mi_string = 'métodosdecadenaquenospermitenformatearstrings'
print(mi_string.isalpha()) # Verdadero
numero = '123'
print(numero.isalpha()) # Falso
isdecimal()
Comprueba si todos los caracteres de una cadena son decimales (0-9).
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.esdecimal()) # Falso
mi_string = '123'
print(mi_string.isdecimal()) # Verdadero
mi_string= '\u00B2'
print(mi_string.isdecimal()) # Falso
mi_string = '12 3'
print(mi_string.isdecimal()) # Falso, espacio no permitido
isdigit()
Comprueba si todos los caracteres de una cadena son números (0-9 y algunos otros caracteres Unicode para números).
string = 'Treinta'
print(string.isdigit()) # Falso
string = '30'
print(string.isdigit()) # Verdadero
string = '\u00B2'
print(string.isdigit()) # Verdadero
isnumeric()
Comprueba si todos los caracteres de una cadena son números o están relacionados con números (al igual que isdigit(), solo acepta más símbolos, como ½)
numero = '10'
print(numero.isnumeric()) # Verdadero
numero = '\u00BD' # ½
print(numero.isnumeric()) # Verdadero
numero = '10.5'
print(numero.isnumeric()) # Falso
isidentifier()
Comprueba si un identificador es válido – comprueba si una cadena es un nombre de variable válido.
identificador = '30DiasDePython'
print(identificador.isidentifier()) # Falso, porque empieza por un número
identificador = 'treinta_días_de_python'
print(identificador.isidentifier()) # Verdadero
islower()
Comprueba si todos los caracteres del alfabeto de la cadena están en minúsculas.
string = 'treinta días de python'
print(string.islower()) # Verdadero
string = 'Treinta días de python'
print(string.islower()) # Falso
isupper()
Comprueba si todos los caracteres del alfabeto de la cadena están en mayúsculas.
string = 'treinta días de python'
print(string.isupper()) # Falso
string = 'TREINTA DÍAS DE PYTHON'
print(string.isupper()) # Verdadero
join()
Devuelve una cadena concatenada.
web_leng = ['HTML', 'JavaScript', 'CSS']
resultado = ' '.join(web_leng)
print(web_leng)
print(resultado) # 'HTML CSS JavaScript React
web_leng = ['HTML', 'JavaScript', 'CSS']
result = '# '.join(web_leng)
print(result) # 'HTML# JavaScript# CSS'
strip()
Elimina todos los caracteres dados empezando por el principio y el final de la cadena. Si no se introduce parámetro elimina los espacios que hay en la cadena. Ideal para limpiar strings.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.strip('métings')) # 'odos de cadena que nos permiten formatear str'
replace()
Reemplaza la subcadena con una cadena dada
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.replace('cadena', 'string')) # métodos de string que nos permiten formatear strings
split()
Divide la cadena y la almacena en una lista, utilizando la cadena dada o el espacio como separador
mi_string = '['métodos', 'de', 'cadena''
print(mi_string.split()) # ['métodos', 'de', 'cadena']
mi_string= 'méto,dos, de, cadena'
print(mi_string.split(', ')) # ['méto,dos', 'de', 'cadena']
title()
Devuelve una cadena de título en mayúsculas
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.title()) # Métodos De Cadena Que Nos Permiten Formatear Strings
swapcase()
Convierte todos los caracteres en mayúsculas a minúsculas y todos los caracteres en minúsculas a caracteres en mayúsculas
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.swapcase()) # MÉTODOS DE CADENA QUE NOS PERMITEN FORMATEAR STRINGS
mi_string= 'Métodos De Cadena Que Nos Permiten Formatear Strings'
print(mi_string.swapcase()) # mÉTODOS dE cADENA qUE nOS pERMITEN fORMATEAR sTRINGS
startswith()
Comprueba si la cadena comienza con la cadena especificada.
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.startswith('métodos')) # Verdadero
mi_string = 'métodos de cadena que nos permiten formatear strings'
print(mi_string.startswith('cadena')) # Falso