Мы любим консольные приложения, но как много способов мы знаем, чтобы оформить вывод в консоль кроме простого print? Я уже рассказывал на своем телеграм-канале про TQDM для красивых прогресс-баров. Теперь расскажу, как делать красивые таблицы.
Рекомендую библиотеку PrettyTable (https://github.com/jazzband/prettytable).
Установка:
pip install prettytable
Простой пример. Зададим сначала поля, которые отобразятся в заголовке, а потом добавим строчки.
from prettytable import PrettyTable x = PrettyTable() # зададим названия полей в заголовках x.field_names = ["City name", "Area", "Population", "Annual Rainfall"] # добавим строки данных x.add_row(["Adelaide",1295, 1158259, 600.5]) x.add_row(["Brisbane",5905, 1857594, 1146.4]) x.add_row(["Darwin", 112, 120900, 1714.7]) x.add_row(["Hobart", 1357, 205556, 619.5]) x.add_row(["Sydney", 2058, 4336374, 1214.8]) x.add_row(["Melbourne", 1566, 3806092, 646.9]) x.add_row(["Perth", 5386, 1554769, 869.4]) print(x) # проще простого!
Получим на экране:
+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | | Sydney | 2058 | 4336374 | 1214.8 | | Melbourne | 1566 | 3806092 | 646.9 | | Perth | 5386 | 1554769 | 869.4 | +-----------+------+------------+-----------------+
Того же эффекта можно достичь, если добавлять данных по столбцам (иногда так удобнее).
x = PrettyTable() x.add_column("City name", ["Adelaide","Brisbane","Darwin","Hobart","Sydney","Melbourne","Perth"]) x.add_column("Area", [1295, 5905, 112, 1357, 2058, 1566, 5386]) x.add_column("Population", [1158259, 1857594, 120900, 205556, 4336374, 3806092, 1554769]) x.add_column("Annual Rainfall",[600.5, 1146.4, 1714.7, 619.5, 1214.8, 646.9, 869.4]) print(x)
Даже если вы не фанат консоли, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. Туда мы тоже можем добавить и нашу таблицу.
with open('1.txt', 'w') as f: f.write(x.get_string())
Если мы работаем с базой данных, например Sqlite, то можно печатать результаты ваших запросов красивыми таблицами вот так:
import sqlite3 from prettytable import from_cursor # тут вы загружаете вашу БД и делаете запрос, какой надо. connection = sqlite3.connect("mydb.db") cursor = connection.cursor() cursor.execute("SELECT field1, field2, field3 FROM my_table") mytable = from_cursor(cursor) print(mytable)
Параметры таблицы можно кастомизировать, меняя практически все, что придет в голову. Также вывод таблицы можно сортировать, выделять нужные колонки и диапазоны рядов. Читайте официальную документацию или пишите комментарии.
Специально для канала PyWay.