Python tiene un sofisticado sistema de formato para las cadenas de texto, ya sea para imprimir información fija o imprimir la información ingresada por un programa. Para ello utilizaremos el método format()
. En clases posteriores explicaremos más a detalle lo que es un método. Por ejemplo, creamos la cadena de texto
saludo = "Hola {}"
donde hemos colocado {}
el cual será sustituido por la cadena de texto que desemos implementar mediante el método format()
. Por ejemplo
print(saludo.format("Luis"))
print(saludo.format("¿Cómo estás?"))
Hola Luis Hola ¿Cómo estás?
En otras palabras, el método format()
nos puede ayudar a hacer plantillas. Por ejemplo
nombre = "Luis"
edad = 23
print("{} tiene {} años.".format(nombre, edad))
Luis tiene 23 años.
donde estamos colocando las llaves vacías para después sustituirlas por los valores que ingresemos como parámetros dentro del método format()
, así, las primeras llaves vacías serán sustituidas por la variable de tipo string nombre
y las sgundas por la variable edad
. Más aún, podemos agregar índices para hacer estas sustituciones
formato = "Hola {1} {0}, hoy estamos a {2} de {3} del {4}"
print(formato.format("Luis", "Apáez", 7, "Julio", 2021))
Hola Apáez Luis, hoy estamos a 7 de Julio del 2021
Con el índice 0 correspondiente a la primera entrada de format()
(que en nuestro caso es la cadena "Luis"
), el índice 1 con la segunda entrada de format()
(que en nuestro caso es la cadena "Apáez"
) y así sucesivamente. Puede ser que el uso de índices en cierto momento sea confuso, imaginemos un formato de texto con más de 20 índices, para ello contamos con la alternativa de colocar palabras claves o llaves que nos ayuden a identificar el valor que debemos ingresar con el método format()
. Por ejemplo
formato2 = "Hola {apellido} {nombre}, hoy estamos a {dia} de {mes} del {agno}"
print(formato2.format(apellido = "Apáez", nombre = "Luis", dia = 7, mes = "Julio", agno = 2021))
Hola Apáez Luis, hoy estamos a 7 de Julio del 2021
De esta manera el orden de cómo ingresemos los valores no tiene relevancia
print(formato2.format(agno = 2021, apellido = "Apáez", dia = 7, nombre = "Luis", mes = "Julio"))
Hola Apáez Luis, hoy estamos a 7 de Julio del 2021
Podemos utilizar el método format()
para acotar el número de espacios disponibles para imprimir. Por ejemplo
print("|{:33}|".format("Estos son 32 espacios disponibles"))
print("|{:33}|".format("Hola!"))
|Estos son 32 espacios disponibles| |Hola! |
y dentro de ese espacio podemos alinear el texto como
<
después de :
>
después de :
^
después de :
por ejemplo
print("|{:<33}|".format("Alineado a la izquierda"))
print("|{:>33}|".format("Alineado a la derecha"))
print("|{:^33}|".format("Alineado al centro"))
|Alineado a la izquierda | | Alineado a la derecha| | Alineado a al centro |
También podemos dar formato a los números para separarlos cada tres cifras, esto es
print("{:,}".format(123456789))
123,456,789
Una plantilla es una clase creada mediante la función string.Template()
. Para trabajar con esta función necesitamos importar el módulo string
. Una plantilla (Template) contiene uno o más nombres de variables precedidas por el símbolo $\$$. Por ejemplo
import string
template = string.Template("El usuario $usuario tiene $n_mensaje mensajes nuevos")
Ya hemos creado la plantilla, el siguiente paso es ingresar y/o substituir los valores según sea el caso. Para ello emplearemos template.substitute()
que jugará un papel muy similar al de format()
el cual trabajamos antes. Por ejemplo
print(template.substitute(usuario = "Luis", n_mensaje = 10))
El usuario Luis tiene 10 mensajes nuevos
Además, podemos crear lo que se conoce como un diccionario. Un diccionario es una estructura comprimida de pares llave:valor donde la llave es única, éstos son un ejemplo de estructura de datos.
De la plantilla que hemos creado las llaves serían usuario
y n_mensaje
y los valores correspondientes a éstas son "Luis"
y 10
respectivamente. Ahora, imaginemos que tenemos una red social con 6 usuarios y deseamos mostrar el mensaje a cada usuario de modo que usamos
print(template.substitute(usuario = "Luis", n_mensaje = 10))
print(template.substitute(usuario = "Martha", n_mensaje = 5))
print(template.substitute(usuario = "Lua", n_mensaje = 2))
print(template.substitute(usuario = "Azepa", n_mensaje = 8))
print(template.substitute(usuario = "Lola", n_mensaje = 7))
print(template.substitute(usuario = "Pedro", n_mensaje = 1))
El usuario Luis tiene 10 mensajes nuevos El usuario Martha tiene 5 mensajes nuevos El usuario Lua tiene 2 mensajes nuevos El usuario Azepa tiene 8 mensajes nuevos El usuario Lola tiene 7 mensajes nuevos El usuario Pedro tiene 1 mensajes nuevos
Podemos crear un diccionario agregando a cada usuario un ID para identificarlo, así, asociaremos el ID 1 al usuario Luis, el ID 2 al usuario Martha, etcétera. Recordemos que dentro de los diccionarios las llaves deben ser únicas, de tal manera asociarle a cada usuario un ID como lo hemos hecho garantiza dicha unicidad. Luego, podemos colocar la información requerida para mostrar a cada usuario su mensaje correspondiente utilizando dict()
que recibirá como parámetro dicha información. Esto es
ID1 = dict(usuario = "Luis", n_mensaje = 10)
ID2 = dict(usuario = "Martha", n_mensaje = 5)
ID3 = dict(usuario = "Lua", n_mensaje = 2)
ID4 = dict(usuario = "Azepa", n_mensaje = 8)
ID5 = dict(usuario = "Lola", n_mensaje = 7)
ID6 = dict(usuario = "Pedro", n_mensaje = 1)
# Para luego utilizar
print(template.substitute(ID1))
print(template.substitute(ID2))
print(template.substitute(ID3))
print(template.substitute(ID4))
print(template.substitute(ID5))
print(template.substitute(ID6))
El usuario Luis tiene 10 mensajes nuevos El usuario Martha tiene 5 mensajes nuevos El usuario Lua tiene 2 mensajes nuevos El usuario Azepa tiene 8 mensajes nuevos El usuario Lola tiene 7 mensajes nuevos El usuario Pedro tiene 1 mensajes nuevos
En clases posteriores se verá más a detalle el tema de estructuras de datos con python.