Мы любим консольные приложения, но как много способов мы знаем, чтобы оформить вывод в консоль кроме простого 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.

Добавить комментарий