Contenido del capítulo

En este capítulo te enseñaré muchas cosas sobre el manejo básico de las cadenas de caracteres.

Duración estimada de todo el contenido:
Duración de los vídeos:
Contiene 8 ejercicios de Python para resolver. Contiene 4 vídeos.
Tabla de contenidos
Logo

    ¿Qué es una cadena de caracteres?

    ¿Qué es la concatenación? ¿Cómo funciona?
    ¿Qué es la concatenación? ¿Cómo funciona?

    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)
    Resultado en la consola
    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)
    Resultado en la consola
    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)
    Resultado en la consola
    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")
    Resultado en la consola
    String 1 String 2

    Espacio publicitario

    Tipos de comillas en cadenas de caracteres

    Intercambio de comillas en strings de Python
    Intercambio de comillas en strings de Python

    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.")
    Error en la consola
    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.

    Sencillamente, se trata de las comillas. En Python una cadena de caracteres comienza con una comilla doble o simple, y termina cuando se encuentra una igual.

    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.')
    Resultado en la consola
    "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.")
    Resultado en la consola
    '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.")
    Resultado en la consola
    "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.')
    Resultado en la consola
    'El tiempo es oro', me dijo

    Formateo de cadenas

    ¿Qué es f-strings? ¿Cómo funciona? - Python
    ¿Qué es f-strings? ¿Cómo funciona? - Python

    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.")
    
    Resultado en la consola
    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)
    Error en la consola
    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}.")
    Resultado en la consola
    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)
    Resultado en la consola
    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

    Métodos para strings de Python
    Métodos para strings de Python

    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.

    Para que nos entendamos claro, se refiere a poner la primera letra en mayúscula.

    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)
    Resultado en la consola
    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}.")
    Resultado en la consola
    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)
    
    Resultado en la consola
    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)
    Resultado en la consola
    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)
    Resultado en la consola
    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}.")
    Resultado en la consola
    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.")
    Resultado en la consola
    '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!"')
    Resultado en la consola
    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!\"")
    Resultado en la consola
    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'.")
    Resultado en la consola
    "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\'.')
    Resultado en la consola
    "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)
    Resultado en la consola
    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)
    Resultado en la consola
    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)
    Resultado en la consola
    Este texto está listo para ser moldeado.

    Espacio publicitario