¿Qué es una cadena de caracteres?
Los strings
, conocidos en español como
cadenas de caracteres, son exactamente lo que su nombre
indica, cadenas que contienen agrupaciones de caracteres.
Un carácter puede ser tanto una letra, como un número, o
incluso símbolos, como podría ser el dólar $
,
o la almohadilla #
.
Espacio publicitario
¿Qué es la concatenación?
La concatenación es la acción de unir dos cadenas de caracteres formando una sola. Esta acción puede ser encadenada si quieres ir uniendo más de dos cadenas.
Una de las formas más básicas de concatenación que hay en
Python, es en la que utilizamos el operador de adición
(+
). Podríamos decir que “sumamos” los
valores de las dos cadenas, obteniendo un resultado del
total de las dos.
Aquí puedes ver un ejemplo:
fragmento1 = "La programación es como la vida:"
fragmento2 = "llena de errores, pero también de posibilidades."
# concatenamos los dos strings
frase_completa = fragmento1 + fragmento2
# Imprimimos los dos strings en uno solo
print(frase_completa)
La programación es como la vida:llena de errores, pero también de posibilidades.
Si te fijas en la salida de la consola, concretamente en la parte marcada en la consola vida:llena, verás que después de los dos puntos, faltaría un espacio (con el fin de escribir de manera correcta). Dicho espacio, lo podemos conseguir de varias formas.
Una opción es incluir el espacio al final de la primera cadena, o al principio de la segunda.
Por ejemplo:
fragmento1 = "La programación es como la vida:"
fragmento2 = " llena de errores, pero también de posibilidades."
# concatenamos los dos strings
frase_completa = fragmento1 + fragmento2
# Imprimimos los dos strings en uno solo
print(frase_completa)
La programación es como la vida: llena de errores, pero también de posibilidades.
Hay otra posibilidad un poco más engorrosa. Se trata de añadir el espacio como una tercera cadena de caracteres:
fragmento1 = "La programación es como la vida:"
fragmento2 = "llena de errores, pero también de posibilidades."
# concatenamos los dos strings
frase_completa = fragmento1 + " " + fragmento2
# Imprimimos los strings en uno solo
print(frase_completa)
La programación es como la vida: llena de errores, pero también de posibilidades.
Por cierto, esta concatenación no es exclusiva sobre
variables, se puede utilizar en cualquier elemento que
soporte cadenas de caracteres, como por ejemplo un
print()
:
print("String 1 " + "String 2")
String 1 String 2
Espacio publicitario
Tipos de comillas en cadenas de caracteres
En Python disponemos de dos tipos de comillas para escribir cadenas:
- Simples:
' '
- Dobles:
" "
Veamos de qué forma puedes utilizarlas en el código.
¿Cómo escribirías la siguiente frase en una cadena de caracteres?
"El tiempo es oro", me dijo.
Algo que no puedes hacer es esto:
print(""El tiempo es oro", me dijo.")
SyntaxError: invalid syntax. Perhaps you forgot a comma?
Error de sintaxis: sintaxis inválida. ¿Tal vez se te olvidó una coma?
En este caso, el intérprete de Python no sabe muy bien donde está el fallo. Sí que sabe que la sintaxis está mal, pero no nos dice exactamente cuál es el problema.
Entonces, en el código erróneo que te acabo de exponer, la cadena empieza donde está la primera comilla, y se cierra directamente con la comilla literal, que tiene la propia frase.
Analicemos la línea errónea:
-
Tenemos apertura y cierre de la primera cadena de
caracteres aquí:
""
. -
El tiempo es oro
, se queda sin envolver dentro de una cadena, dado que ya se ha cerrado. -
", me dijo."
, es otra cadena, con su apertura y cierre.
Con esto puedes apreciar el desastre que se está produciendo por unas simples comillas mal puestas.
Alternar comillas
Para poder escribir comillas dentro de una cadena debemos ser cuidadosos.
El texto anterior se puede envolver entre comillas simples. De esta forma, el intérprete de Python va a identificar la apertura donde encuentre la primera comilla simple, y el cierre donde encuentre la segunda.
Las comillas dobles pasan a ser caracteres de la propia cadena:
print('"El tiempo es oro", me dijo.')
"El tiempo es oro", me dijo
Por otro lado, si es a la inversa también funciona. Supongamos que en lugar de ponerle comillas dobles literalmente a la cadena, le quieres poner comillas simples. Lo puedes hacer así:
print("'El tiempo es oro', me dijo.")
'El tiempo es oro', me dijo
Espacio publicitario
Escape de caracteres
El escape de caracteres es un tema amplio y complejo (más denso que complicado), así que voy a enseñarte una pequeña cosa relacionada con los ejemplos, que seguramente te será de utilidad en más de una ocasión.
El escape de caracteres es una forma de incluir caracteres especiales en las cadenas de Python.
Esta técnica se implementa mediante el símbolo de la barra
invertida, contrabarra o
backslash en inglés
(\
).
Por ejemplo, si quieres sacar literalmente unas comillas
dobles en una cadena, lo puedes hacer con esta barra
invertida y el símbolo de la comilla doble, sin espacios
entre ambos (\"
).
Esta es la forma de aplicarlo a una cadena:
print("\"El tiempo es oro\", me dijo.")
"El tiempo es oro", me dijo
Esto hace que el intérprete sea capaz de distinguir correctamente donde empieza y donde acaba la cadena de caracteres, aunque estemos usando el mismo tipo de comillas.
Sencillamente, estamos incrustando un caracter de comillas dobles con cada barra. Así evitamos tener que alternar entre diferentes tipos de comillas.
También lo podemos hacer con comillas simples, o con muchos otros caracteres diferentes. Por eso he dicho que es un tema denso.
print('\'El tiempo es oro\', me dijo.')
'El tiempo es oro', me dijo
Formateo de cadenas
El formateo de cadenas de caracteres es una técnica para crear cadenas de caracteres mediante la inserción de valores variables en ellas. Gracias a esta técnica podemos combinar texto estático (texto que no cambia), con valores dinámicos (texto que va cambiando).
Diferencia entre concatenación y formateo de cadenas
La concatenación de cadenas de caracteres es una forma de unir dos o más cadenas. Mientras que el formateo de cadenas es una forma de insertar valores en una cadena, en una posición específica.
A continuación, vas a ver como formatear cadenas mediante una técnica de Python conocida como f-strings.
En inglés, formateo de cadenas se dice string format o string formatting.
Espacio publicitario
Sintaxis de f-strings de Python
La sintaxis de f-strings es muy sencilla. Se trata
de indicarle al intérprete de Python que quieres utilizar
dicha técnica, escribiendo una letra f
de
prefijo. Esta letra puede escribirse tanto mayúscula, como
minúscula, colocándola antes de la primera comilla de la
cadena de caracteres.
Aquí tienes los posibles usos, con comillas dobles y simples:
f" "
F" "
f' '
F' '
Entre las comillas, escribiremos el texto que formará la cadena y todos los valores incrustados.
Incrustando valores en las cadenas
Con esta f
, le indicamos al intérprete de
Python que queremos hacer uso de la técnica. Luego, dentro
de la cadena tenemos que incrustar los valores que
necesitemos, mediante el uso de unas llaves ({ }
).
Aquí tienes un ejemplo de como hacerlo:
# Solicitud de nombre
nombre = input("Por favor, introduzca su nombre:\n")
# Incrustación del valor de la variable en la cadena
print(f"Hola, {nombre}. Tenga un maravilloso día.")
Por favor, introduzca su nombre:
Enrique
Hola, Enrique. Tenga un maravilloso día.
Gracias a esta nueva técnica, he conseguido incrustar el
valor de la variable nombre
, sin tener que
utilizar el operador de adición.
Esto implica una mayor legibilidad y comodidad, al no tener que ir creando cadenas para cada parte. Se hace todo en la misma gracias a las llaves.
Entre las llaves, pondrás cualquier tipo de expresión. Puede ser una operación matemática, el valor de una variable, etc.
Si construimos el código anterior, utilizando la técnica de concatenación, quedará así:
# Solicitud de nombre
nombre = input("Por favor, introduzca su nombre:\n")
# Concatenación
print("Hola, " + nombre + ". Tenga un maravilloso día.")
En cuanto a legibilidad, es un poquito más difícil de leer. Quizás en esta cadena no se aprecia demasiado, al ser tan sencilla, pero ya verás que en casos más complejos notarás una gran diferencia.
Además, evitaremos múltiples errores como este:
PI = 3.14159265359
print("El valor de PI siempre será " + PI)
TypeError: can only concatenate str (not "float") to str
Error de tipo de dato: solo se puede concatenar str (no "float") a str.
El error indica que no se puede concatenar una cadena de caracteres, con un tipo de dato
float
.
Si lo hacemos con el formateo de cadenas de caracteres tendremos el problema resuelto:
PI = 3.14159265359
print(f"El valor de PI siempre será {PI}.")
El valor de PI siempre será 3.14159265359.
Resolviendo expresiones en las cadenas
Tal y como he indicado se pueden colocar todo tipo de expresiones entre las llaves. Por ejemplo, una suma:
a = 10
b = 30
resultado = f"La suma de {a} + {b} es: {a + b}"
print(resultado)
La suma de 10 + 30 es: 40
Te recomiendo que vayas probando de incrustar todo lo que se te vaya ocurriendo, y que vayas descubriendo todas las posibilidades.
Espacio publicitario
Métodos de cadenas de caracteres
Recuerda que en Python los tipos de datos son objetos.
Expliqué anteriormente que un elemento como una cadena de
caracteres (str
) es un objeto.
Los objetos tienen una característica muy buena, una serie de funcionalidades llamadas métodos.
Estos métodos son algoritmos ya escritos en el código interno de Python, que permiten hacer cosas con los objetos de una forma muy sencilla, sin tener que programar toda la lógica necesaria.
Los objetos str
tienen un montón de métodos
diferentes con los que manipular muchas cosas sobre ellos.
Hay muchos métodos para las cadenas de caracteres, por lo que no los verás todos en este curso. Sin embargo, sabiendo utilizar dos o tres de ellos, te será muy fácil saber utilizar el resto a medida que vayas investigando por tu cuenta.
Cómo llamar a un método en Python
En programación, cuando decimos “llamar a un método”, nos referimos a “hacer uso de él”. Al llamarlo, se ejecuta el código que tiene programado.
Para llamar a un método, la sintaxis que utiliza Python es la siguiente:
objeto.nombre_metodo()
La primera parte (objeto
) es el objeto con el
que queremos aplicar la llamada del método. Por ejemplo,
un str
.
Seguido del nombre del objeto, vamos a poner un punto para indicarle al intérprete de Python que queremos llamar a un método del objeto.
Después del punto escribiremos el nombre del método, siempre con los dos paréntesis.
Entre esos paréntesis, a veces no escribiremos nada, y otras veces escribiremos una serie de argumentos. Estos argumentos servirán para proporcionarle datos al método.
Espacio publicitario
El método capitalize()
El método capitalize()
permite convertir el
primer carácter de una cadena de caracteres en letra
mayúscula, y el resto de caracteres los deja en
minúsculas.
Podemos traducir el término capitalize como capitalizar.
En el siguiente ejemplo, está todo el texto en minúsculas, incluso la primera letra.
Si queremos que Python haga la transformación de forma automática, utilizaremos este nuevo método con la cadena de caracteres:
frase = "la imaginación es el principio de la creación."
# Primera letra mayúscula
frase_convertida = frase.capitalize()
print(frase_convertida)
La imaginación es el principio de la creación.
En la consola aparece una cadena convertida con la primera letra en mayúscula.
El método no afecta a la variable frase
, solo
obtiene su contenido y crea una nueva cadena de caracteres
en la variable frase_convertida
, con la
primera letra mayúscula.
Entrada de datos con conversión de letra mayúscula
Veamos algún ejemplo de uso práctico para este método.
En el siguiente ejemplo, tenemos una entrada de datos que solicita el nombre del usuario.
# Obtiene el nombre del usuario
nombre = input("Introduzca su nombre:\n")
# Convierte la primera letra en mayúscula
nombre_convertido = nombre.capitalize()
print(f"Hola {nombre_convertido}.")
Introduzca su nombre:
enrique
Hola Enrique.
Al ejecutar el programa, el nombre lo he puesto todo en minúsculas. No obstante, este pequeño código de Python, lo convierte automáticamente con la primera letra en mayúscula.
Este es un sencillo ejemplo de uso para este método, pero se le pueden dar muchos más.
A medida que vayas necesitando resolver cosas en tus programas, se te irán ocurriendo más usos para este método, y los que iremos viendo a continuación. Es cuestión de práctica y tener proyectos que requieran soluciones de este tipo.
El método upper()
El método upper()
convierte el contenido de
una cadena de caracteres, completamente en mayúsculas:
frase = "la imaginación es el principio de la creación."
# Todas las letras en mayúsculas
frase_convertida = frase.upper()
print(frase_convertida)
LA IMAGINACIÓN ES EL PRINCIPIO DE LA CREACIÓN.
El nombre del método upper proviene del término anglosajón upper case. Este se traduce como mayúsculas en español.
Espacio publicitario
El método lower()
El método lower()
convierte el contenido de
una cadena de caracteres, completamente en minúsculas:
frase = "lA imAgiNAción ES el pRincipiO de LA CREAción."
# Todas las letras en minúsculas
frase_convertida = frase.lower()
print(frase_convertida)
la imaginación es el principio de la creación.
El nombre del método lower proviene del término anglosajón lower case. Este se traduce como minúsculas en español.
¿Ves? Una vez aprendes a utilizar un método, es muy fácil aprender a utilizar cualquier otro. Solo tienes que saber para qué se utiliza.
Espacio publicitario
Espacio publicitario
Ejercicios de Python para resolver
22. Concatena las siguientes cadenas directamente en un
print()
, utilizando sus nombres de variable:
fragmento1 = "La programación es el arte"
fragmento2 = "de la persistencia. Si no te rindes, "
fragmento3 = "finalmente hallarás una solución."
Si necesitas algún espacio extra para separar algo, añádelo.
Una posible solución es esta:
fragmento1 = "La programación es el arte"
fragmento2 = "de la persistencia. Si no te rindes, "
fragmento3 = "finalmente hallarás una solución."
print(fragmento1 + " " + fragmento2 + fragmento3)
La programación es el arte de la persistencia. Si no te rindes, finalmente hallarás una solución.
23. Formatea con f-strings (formateo de cadenas) una frase exactamente igual a esta:
El resultado de multiplicar 10 por 10, es 100.
Hazlo en el print()
del código que tienes a
continuación:
numero1 = 10
numero2 = 100
print(# La frase formateada va aquí.)
Para los números de la frase, utiliza los valores de las
variables numero1
y numero2
. No
tienes que hacer ninguna operación aritmética, es una
simple frase en una cadena de caracteres formateada.
Tan solo tenías que utilizar la sintaxis de
f-strings, para formatear la frase en el
print()
.
numero1 = 10
numero2 = 100
print(f"El resultado de multiplicar {numero1} por {numero1}, es {numero2}.")
El resultado de multiplicar 10 por 10, es 100.
Para los siguientes ejercicios, escribe cada frase en
diferentes print()
, y prueba de ejecutar sin
que te dé errores. Puedes aplicar la forma que prefieras,
lo importante es que ejecute en la consola, y salga el
resultado exacto de estos enunciados.
24. 'No puedes simplemente dividir por cero y esperar que funcione', dijo el profesor de matemáticas.
La solución aquí es envolver toda la cadena con comillas dobles:
print("'No puedes simplemente dividir por cero y esperar que funcione', dijo el profesor de matemáticas.")
'No puedes simplemente dividir por cero y esperar que funcione', dijo el profesor de matemáticas.
25. El desarrollador exclamó: "¡Las comillas simples y las comillas dobles son importantes en Python!"
La solución aquí está en envolver la cadena con comillas simples:
print('El desarrollador exclamó: "¡Las comillas simples y las comillas dobles son importantes en Python!"')
El desarrollador exclamó: "¡Las comillas simples y las comillas dobles son importantes en Python!"
O bien, lo puedes hacer también utilizando el escape de caracteres para conseguir hacerlo todo con comillas dobles:
print("El desarrollador exclamó: \"¡Las comillas simples y las comillas dobles son importantes en Python!\"")
El desarrollador exclamó: "¡Las comillas simples y las comillas dobles son importantes en Python!"
26. "La mayoría de las brechas de seguridad ocurren por el eslabón más débil, el humano", dijo, poniendo especial énfasis en la palabra ‘humano’.
Este ejercicio te obliga a utilizar el escape de caracteres, puesto que tiene ambos tipos de comillas en la cadena.
Una posible solución es esta:
print("\"La mayoría de las brechas de seguridad ocurren por el eslabón más débil, el humano\", dijo, poniendo especial énfasis en la palabra 'humano'.")
"La mayoría de las brechas de seguridad ocurren por el eslabón más débil, el humano", dijo, poniendo especial énfasis en la palabra 'humano'.
Otra posible solución es esta:
print('"La mayoría de las brechas de seguridad ocurren por el eslabón más débil, el humano", dijo, poniendo especial énfasis en la palabra \'humano\'.')
"La mayoría de las brechas de seguridad ocurren por el eslabón más débil, el humano", dijo, poniendo
especial énfasis en la palabra 'humano'.
Espacio publicitario
Para realizar los siguientes ejercicios, tienes esta cadena de caracteres:
"este Texto está listo pAra SER MOLDEADO."
Las cadenas de caracteres (
str
) tienen métodos para hacer todas estas cosas.
27. Convierte el texto completamente en minúsculas.
Con el método lower()
, todo el texto se
convierte en minúsculas.
texto = "este Texto está listo pAra SER MOLDEADO."
modifica_texto = texto.lower()
print(modifica_texto)
este texto está listo para ser moldeado.
28. Convierte el texto completamente en mayúsculas.
Con el método upper()
, todo el texto se
convierte en mayúsculas.
texto = "este Texto está listo pAra SER MOLDEADO."
modifica_texto = texto.upper()
print(modifica_texto)
ESTE TEXTO ESTÁ LISTO PARA SER MOLDEADO.
29. Convierte solo la primera letra en mayúsculas, el resto en minúsculas.
Con el método capitalize()
, se convierte
todo en minúsculas, y deja la primera letra en letra
mayúscula.
texto = "este Texto está listo pAra SER MOLDEADO."
modifica_texto = texto.capitalize()
print(modifica_texto)
Este texto está listo para ser moldeado.
Espacio publicitario