Hoy veremos cómo alinear y rellenar el espacio al imprimir datos en Python usando la función print. Por ejemplo, alinear un número en una tabla y rellenar el espacio sobrante sin importar la longitud del número.

También vamos a ver cómo alinear una cadena a la izquierda o derecha sin importar el tipo de dato.

Finalmente te mostraré un ejemplo de una tabla alineada en donde no va a importar la longitud de los datos impresos.

La función format

Para alinear texto en Python vamos a usar la función format que tienen todas las cadenas. Esta función permite hacer bastantes cosas, entre ellas alinear a la izquierda o derecha dejando determinada cantidad de espacios en blanco.

La sintaxis es:

cadena.format(valores)

Cada valor que se va a formatear está encerrado entre llaves {}. Dentro de las llaves no va el valor, sino el formato, ya que el valor se pasa como argumento al invocar a format. Entenderás mejor en los ejemplos.

Veamos ahora cómo usarla para alinear datos.

Alinear a la izquierda

Para formatear y alinear una cadena a la izquierda usamos :<cantidad_espacios. Por ejemplo, lo siguiente va a asegurarse de que el texto impreso mida al menos 20 caracteres (lo sobrante lo va a reemplazar por espacios)

nombre = "Luis"
print("|{:<20}|".format(nombre))
# Salida:
# |Luis                |

Alineación derecha con Python

Para el caso contrario (usar print para alinear a la derecha) usamos casi el mismo formato pero ahora usamos el signo de mayor qué: >

El ejemplo queda así:

nombre = "Luis"
print("|{:>20}|".format(nombre))
# |                Luis|

Ejemplo con tabla

Para terminar te voy a mostrar un ejemplo. En este caso vamos a imprimir cadenas y flotantes. Las cadenas van a ir alineadas a la izquierda, y los flotantes a la derecha. El ejemplo queda así:

"""
    https://parzibyte.me/blog/
"""

datos = [
    {
        "nombre": "Luis C.B.",
        "promedio": 9.5,
    },
    {
        "nombre": "John G.",
        "promedio": 8.96,
    },
    {
        "nombre": "Leon Scott",
        "promedio": 9.22,
    },
]
print("+--------------------+----------+")
print("|Nombre              |Promedio  |")
print("+--------------------+----------+")
for dato in datos:
    nombre = dato["nombre"]
    promedio = dato["promedio"]
    cadena = "|{:<20}|{:>10.2f}|".format(nombre, promedio)
    print(cadena)
    print("+--------------------+----------+")

Fíjate en que ahora estoy separando los conceptos y primero formateo la cadena para imprimirla más tarde. También quiero que notes que agregué .2f después de >10 para indicar que el decimal debe mostrarse con dos decimales.

La salida es:

Imprimir tabla con Python - Alineación con print y format

A partir del ejemplo puedes ver cómo es que se pueden alinear los datos en Python, combinarlos, concatenarlos, etcétera.

Te dejo con más tutoriales de Python.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto