Este post es parte del Curso de introducción a Python 3:
- Introducción a Python: Porque programar con Python
- Instalación de Python 3 y IDLE
- Primer programa: “Hola Mundo”
- Tipos de datos en Python
- Asignación y uso de variables
- Valores booleanos
- Colecciones de dato en Python: Listas y Tuplas
- Condicionales: If, else, elif
- Ciclos en Python
- Definición y uso de funciones en Python
- Importación y uso de módulos en Python
- Uso de strings en Python
Introducción
Como vimos anteriormente, en Tipos de datos en Python, los string son un tipo de dato en Python utilizado para representar texto en nuestros programas. Aunque hasta ahora sólo los hemos utilizado para desplegar mensajes con print()
, las cadenas de texto en Python pueden hacer muchas más cosas, como veremos a continuación.
Strings en Python
Propiedades
Los strings en Python, como las tuplas, son inmutables y son iterables, es decir, podemos recorrerlos utilizando un ciclo for
. Además de esto, comparten muchas características con las listas y tuplas, pues básicamente, los strings son tuplas de letras.
Utilizando la palabra in
podemos saber si un caracter aparece en un string:
En el siguiente programa contamos las veces que una vocal aparece en un string utilizando un ciclo for:
Entrada de datos por teclado
Para poder recibir datos por teclados utilizamos la función input()
. Esta función, a su vez, nos permite desplegar un mensaje en pantalla y es utilizada de la siguiente manera:
var = input("Mensaje")
Los datos son recibidos como strings, aunque después podemos convertirlos a enteros o flotantes si lo deseamos.
El siguiente programa muestra un saludo personalizado al usuario:
Concatenación y unión de strings
La concatenación es una operación que nos permite unir strings de la siguiente forma:
string1 + string2 + string3
Resultando en:
string1string2string3
Sin embargo, la concatenación es una operación costosa en memoria, en el sentido de que el equipo necesita crear un nuevo string por cada concatenación , algo que resulta en una reducción en el desempeño del programa imperceptible a primera vista, pero que puede convertirse en un problema al realizarse numerosas veces.
Por tal razón, Python ofrece diferentes opciones para unir dos strings sin penalizar mucho el rendimiento.
Una de estas opciones la hemos usado repetidamente a lo largo de este curso por simplicidad: Separar los valores a imprimir por coma. Al hacer esto no estamos uniendo strings, ya que sólo puede utililzarse dentro de la función print; además, recordando como funcionan los argumentos de las funciones, te habrás dado cuenta que lo que estamos haciendo en realidad es enviar multiples argumentos a print(), y la función imprime cada uno de estos parametros separados por una variable separadora asignada de forma predeterminada a un espacio en blanco, pero que podemos modificar de la siguiente forma:
Salida:
usuario@programadorplus.com usuario en programadorplus.com usuario programadorplus.com usuario de programadorplus.com
Finalmente, podemos realizar concatenación de caracteres utilizando el método str.join()
, que nos permite unir un string con un objeto iterable.
Por ejemplo:
Salida:
ABCDEF
En el código anterior utilizamos str.join()
sobre un string vacio para crear un nuevo string. El método str.join()
es más rápido que la concatenación ya que une dos strings dentro de un iterable en nuevo string, mientras que la concatenación tiene que copiar enteramente los strings que va a unir y el resultado de estos, por ejemplo, si queremos unir cuatro string de 5 caracteres la concatenación funcionará de la siguiente forma:
5+5 + ((5+5)+5) + ((5+5)+5)+5
Resultando en 45 caracteres copiados en memoria por la concatenación en lugar de los 20 que tomaría si se estuvieran uniendo.
En general, lo anterior no debe suponer un problema siempre y cuando no abuses de la concatenación en tus programas.
Formato
El formato de strings en Python nos permite realizar sustituciones de valores en nuestros strings y conversiones dentro del string, entre muchas otras operaciones.
Sustitución de valores
Para sustituir valores dentro del string en Python 3 contamos con diversas sintaxis:
1.- Utilizando corchetes
Salida:
Hola, mi nombre es Noé y soy de México
Utilizando índices:
Salida:
Este curso de introducción a Python cuenta con 12 modulos Este es el año 2018, día 18 de Mayo
Y si cuentas con al menos Python 3.6, puedes incluir variables entre corchetes en tus strings:
Salida:
Bienvenido a este curso de Python 3 en ProgramadorPlus.com!
Conversión de valores
Con str.format()
puedes realizar conversiones entre sistemas de numeración, por ejemplo, para mostrar el número 20
en binario, octal y hexadecimal utilizando el formato por indices:
Salida:
10100 24 14
Constantes
Importando el modulo string
podemos acceder a las constantes definidas en Python:
Salida:
string.ascii_letters = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_lowercase = abcdefghijklmnopqrstuvwxyz string.ascii_uppercase = ABCDEFGHIJKLMNOPQRSTUVWXYZ string.digits = 0123456789 string.hexdigits = 0123456789abcdefABCDEF string.octdigits = 01234567 string.punctuation = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ string.printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c' string.whitespace = ' \t\n\r\x0b\x0c'
Métodos
Los string también contienen varios métodos para modificar la salida del string, algunos de estos son:
str.upper()
– Regresa el string en mayusculasstr.lower()
– Regresa el string en minusculasstr.count(substring)
– Regresa la cantidad de veces que el substring aparece en el stringstr.endswith(sufijo)
– Devuelve True si la cadena termina con el sufijostr.find(substring)
– Devuelve el índice donde se encuentra el substring en el stringstr.replace(substring, reemplazo)
– Reemplaza el substring dentro de la cadena con un reemplazo especificado.
Salida:
HOLA MUNDO! hola mundo! 2 True 5 Saludos mundo!
Conclusión
Los strings son necesarios para poder mostrar todo tipo de mensajes a los usuarios de nuestros programas; gracias a str.format()
y demás métodos existentes, los strings se vuelven mucho más flexibles y convenientes, pudiendo adaptarse a las salidas que necesitemos y convirtiendose en mucho más que simple texto plano desplegado.
Los strings cuentan con muchos más métodos y opciones de formato, que puedes consultar en la documentación oficial de Python si deseas conocerlos.