Перейти к содержимому

Как вывести таблицу в питоне

  • автор:

Управление выводом таблицы, модуль prettytable в Python

Модуль prettytable позволяет управлять выводом таблицы, например можно ограничить вывод только теми полями или строками, которые необходимы к просмотру.

Создадим таблицу с которой будем работать:

from prettytable import PrettyTable mytable = PrettyTable() mytable.field_names = ["City name", "Area", "Population", "Annual Rainfall"] mytable.add_rows( [ ["Adelaide", 1295, 1158259, 600.5], ["Brisbane", 5905, 1857594, 1146.4], ["Darwin", 112, 120900, 1714.7], ["Hobart", 1357, 205556, 619.5], ] ) 

Управление выводом данных таблицы осуществляется методом PrettyTable.get_string() .

Управление выводом колонок.

Аргумент fields метода PrettyTable.get_string() принимает список имен полей, которые нужно напечатать:

>>> table = mytable.get_string(fields=["City name", "Population"]) >>> print(table) #+-----------+------------+ #| City name | Population | #+-----------+------------+ #| Adelaide | 1158259 | #| Brisbane | 1857594 | #| Darwin | 120900 | #| Hobart | 205556 | #+-----------+------------+ 

Управление выводом строк.

Аргументы start и end метода PrettyTable.get_string() принимают индекс первой и последней строки для печати соответственно.

Обратите внимание, что индексация работает так же, как срезы списка Python — для печати 3-й и 4-й строк таблицы установите start равным 2 (первая строка — это строка 0, поэтому третья — это строка 2) и установите end на 4 (индекс 4-ой строки, плюс 1):

>>> table = mytable.get_string(start=2, end=4) >>> print(table) #+-----------+------+------------+-----------------+ #| City name | Area | Population | Annual Rainfall | #+-----------+------+------------+-----------------+ #| Darwin | 112 | 120900 | 1714.7 | #| Hobart | 1357 | 205556 | 619.5 | #+-----------+------+------------+-----------------+ 

Управление сортировкой данных в таблице.

Аргументы sortby метода PrettyTable.get_string() , который принимает строку с именем одного поля, отсортирует данный столбец таблицы по возрастанию (от меньшего к большему).

>>> table = mytable.get_string(sortby='Area') >>> print(table) #+-----------+------+------------+-----------------+ #| City name | Area | Population | Annual Rainfall | #+-----------+------+------------+-----------------+ #| Darwin | 112 | 120900 | 1714.7 | #| Adelaide | 1295 | 1158259 | 600.5 | #| Hobart | 1357 | 205556 | 619.5 | #| Brisbane | 5905 | 1857594 | 1146.4 | #+-----------+------+------------+-----------------+ 

Если необходимо отсортировать в обратном порядке, то в метод нужно добавить ключевой аргумент reversesort=True .

>>> table = mytable.get_string(sortby='Area', reversesort=True) >>> print(table) #+-----------+------+------------+-----------------+ #| City name | Area | Population | Annual Rainfall | #+-----------+------+------------+-----------------+ #| Brisbane | 5905 | 1857594 | 1146.4 | #| Hobart | 1357 | 205556 | 619.5 | #| Adelaide | 1295 | 1158259 | 600.5 | #| Darwin | 112 | 120900 | 1714.7 | #+-----------+------+------------+-----------------+ 

Если необходимо, чтобы таблицы сортировались всегда определенным образом, то можно сделать этот параметр долгосрочным при помощи атрибута экземпляра класса PrettyTable.sortby :

# сортировка по колонке `Population` >>> mytable.sortby = "Population" # отсортирует вывод по колонке `Population` >>> print(mytable) 

Теперь, команда print(mytable) напечатает таблицу, отсортированную по колонке Population . Также, при помощи атрибута mytable.reversesort = True можно сортировать таблицу по колонке, указанной в mytable.sortby — в обратном порядке. Такое поведение будет сохраняться, пока не отключить сортировку атрибутом x.sortby = None .

# отключение сортировки >>> mytable.sortby = None # выведет таблицу в исходном виде >>> print(mytable) 

Если нужно указать пользовательскую функцию сортировки, то можно использовать ключевой аргумент sort_key .

Передайте аргументу sort_key функцию, которая принимает два списка значений и возвращает отрицательное или положительное значение в зависимости от того, должен ли первый список появляться до или после второго. Если в таблице n столбцов, то в каждом списке будет n + 1 элемент. Каждый список соответствует одной строке таблицы. Первым элементом будут данные из соответствующей строки в столбце, заданном аргументом sort_by . Остальные n элементов — это данные в каждом столбце таблицы по порядку, включая повторяющийся экземпляр данных в столбце sort_by .

  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Печать табличных данных в файл, модуль prettytable
  • Удаление данных из таблицы, модуль prettytable
  • Управление выводом таблицы, модуль prettytable
  • Управление внешним видом таблицы, модуль prettytable
  • Генерация HTML и JSON при помощи prettytable

Как в Python вывести таблицу как в примере?

Да, я знаю про PrettyTable. Он хорош.
Но нигде не могу найти примера как реализовать следующее:

61a2078ef412b956718135.png

Причем границы таблицы не особо и нужны.
Нужно чтобы строчка — это строчка, но с несколькими подстроками.
У каждого ip адреса есть несколько параметров и я хочу чтобы они печатались с новой строки,
но в том же месте где такой же параметр уже напечатан в основной строке.

P.S. прочитал тонну информации про PrettyTable и аналоги — в ней нет примера соответствующего моему запросу.
Либо подскажите, пожалуйста — как получить координаты места где напечатался первый элемент списка/значение словаря?

  • Вопрос задан более двух лет назад
  • 1894 просмотра

1 комментарий

Простой 1 комментарий

А покажите сначала, какие поисковые строки вы использовали в Google для поиска ответа?
Решения вопроса 1

Vindicar

Вывести в консоль?
Ну я бы подходил к этому так.
1. Преобразовать все выводимые данные в строки и разбить их по переносам строки.
2. Определить наибольшую ширину каждого столбца с учётом переносов строки. Для каждой ячейки вычисляем наибольшую ширину строки, потом ищем максимум по столбцу. Можно добавить 1-2 символа как «поля», если надо.
3. При выводе строки, выводим строки ячеек вместе, используя itertools.zip_longest(). Т.е. сначала первую строку в каждой ячейке, потом вторую, и т.д. Если получили вместо одной из строк None, значит в этой ячейке строки уже закончились — выводим пробелы.
Ширину вывода каждой ячейки мы знаем из пункта 2, выровнять значение пробелами — тривиально.

# -*- coding: utf-8 -*- import typing as t import itertools def print_table(headers: t.Dict[str, str], data: t.Iterable[t.Dict[str, str]]) -> None: keys: t.List[str] = list(headers.keys()) #список ключей в таблице - чтобы сохранять порядок столбцов split_data: t.List[t.Dict[str, t.List[str]]] = [] #ячейки, разбитые на строки max_widths: t.Dict[str, int] = < key:len(value) for key,value in headers.items() >#ширина каждого столбца в таблице for line in data: #разбиваем ячейки строки на текстовые строки по \n split_line: t.Dict[str, t.List[str]] = < key:value.splitlines() for key,value in line.items() >#обновляем ширину столбцов, если надо for key in keys: new_width = max(map(len, split_line.get(key, ['']))) if new_width > max_widths[key]: max_widths[key] = new_width split_data.append(split_line) #выводим заголовки for key in keys: print(f'>>'.format(headers[key]), end='|') #можно вместо | поставить пробел print() print( '+'.join('-'*v for v in max_widths.values()) + '|') #разделитель заголовка и тела таблицы #выводим строки таблицы for row in split_data: for parts in itertools.zip_longest(*(row[key] for key in keys)): #parts - кортеж, где каждый элемент либо строка в очередной ячейке, либо None for key,part in zip(keys, parts): #None означает, что в этой ячейке строки текста уже кончились print(f'>>'.format(part if part is not None else ''), end='|') print() print( '+'.join('-'*v for v in max_widths.values()) + '|') #разделитель строк, если надо data = [ , , ] headers = print_table(headers, data)
IP address |Model |Uptime |Uplink state|Uplink errors|Uplink M-cast| -----------+-----------+-----------+------------+-------------+-------------| 192.168.0.2|DES-3200-26|3d 12:03:05|25: up |0 |24560 | | | |26:up |11 |113 | -----------+-----------+-----------+------------+-------------+-------------| 192.168.0.2|DES-3200-52|1d 04:00:15|49: up |10 |5497812 | | | |50:up |1133 |3145 | | | |51:down |0 |0 | | | |52:down |0 |0 | -----------+-----------+-----------+------------+-------------+-------------|

Вывод таблицы умножения в Python

Статьи

Автор Admin На чтение 3 мин Просмотров 12.9к. Опубликовано 20.08.2022

Введение

Довольно часто новичкам в Python при изучении темы «циклы» задают задание вывести таблицу умножения с помощью цикла. В статье разберём два способа вывода таблицы умножения в Python.

Вывод таблицы умножения в Python циклом for

И так, разберём вывод таблицы умножения используя цикл for. Для начала создаём цикл от одного, до десяти:

for i in range(1, 10):

В нём создаём вложенный цикл от одного, до десяти:

for i in range(1, 10): for j in range(1, 10):

Во вложенном цикле выведем перемножение i и j с использованием форматирования для более красивого вывода.

for i in range(1, 10): for j in range(1, 10): print("%4d" % (i * j), end="")

Ну и добавим пустой print() в основном цикле:

for i in range(1, 10): for j in range(1, 10): print("%4d" % (i * j), end="") print()

Вот что выведет программа после запуска:

Вывод таблицы умножения в Python циклом while

Теперь рассмотрим способ вывода таблицы умножения циклом while.

Для начала создадим переменную i, которая будет равняться единице:

i = 1

Теперь создадим сам цикл while, который не закончится, пока i будет меньше 10:

i = 1 while i < 10:

В цикле создадим переменную j, которая будет равняться единице, а после неё будет идти вложенный цикл while, который не закончится, пока j будет меньше 10:

i = 1 while i < 10: j = 1 while j < 10:

Во вложенном цикле будет идти точно такой же вывод, как и в способе с циклом for, а так же j будет увеличиваться на единицу:

i = 1 while i < 10: j = 1 while j < 10: print("%4d" % (i * j), end="") j += 1

В основном цикле пропишем пустой print(), и прибавление единице к i:

i = 1 while i < 10: j = 1 while j < 10: print("%4d" % (i * j), end="") j += 1 print() i += 1

Программа готова, вывод будет точно таким же, как и в первом способе:

Заключение

В статье мы с Вами научились выводить таблицу умножения в Python двумя способами. С использованием цикла for, и цикла while. Надеюсь Вам понравилась статья, удачи! ��

Вывод списков в формате табличных данных на Python

Одним из часто встречающихся вызовов для начинающих разработчиков на Python является преобразование и вывод данных в табличном формате. Например, у вас есть список заголовков и двумерный массив данных, которые вы хотите представить в виде таблицы.

headings = ["Heading1", "Heading2", "Heading3"] data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Ваша цель — представить эти данные в виде таблицы, где headings — это заголовки столбцов, а data — это соответствующие значения. При этом заголовки могут иметь разную длину, а данные представляют собой целые числа.

Существуют различные способы решения этой задачи на Python. Один из простых и эффективных методов — использовать функциональность библиотеки pandas, которая предназначена для работы с табличными данными.

import pandas as pd df = pd.DataFrame(data, columns=headings) print(df)

Этот код создает объект DataFrame из библиотеки pandas, используя список headings в качестве заголовков столбцов и двумерный список data в качестве значений. Затем он просто выводит DataFrame, что дает красиво отформатированный вывод в виде таблицы.

Важно отметить, что pandas обеспечивает множество других функций для работы с табличными данными, включая сортировку, фильтрацию, агрегирование и даже визуализацию. Благодаря этому, pandas становится мощным инструментом для анализа данных на Python.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *