Как создать нижний колонтитул для Python PrettyTable - PullRequest
0 голосов
/ 15 мая 2019

Я хочу добавить нижний колонтитул в мою таблицу PrettyTable, чтобы суммировать данные, хранящиеся в строках выше.Я создал счетчик в сценарии, но я хотел бы добавить его в таблицу.

Код, который мне нужен для создания приведенной ниже таблицы, выглядит следующим образом (.add_row находится в цикле):

outTbl = PrettyTable(["Projects", "Number"])
outTbl.add_row([eachProj, count])

..., которая генерирует таблицу, похожую на эту:

+--------------------------+-----------+
|        Projects          |   Number  |
+--------------------------+-----------+
|        Project A         |     5     |
|        Project B         |     9     |
|        Project C         |     8     |
|        Project D         |     2     |
+--------------------------+-----------+

... но я ищу функциональность для создания вышеупомянутой таблицы со сводным нижним колонтитулом ввнизу:

+--------------------------+-----------+
|        Projects          |   Number  |
+--------------------------+-----------+
|        Project A         |     5     |
|        Project B         |     9     |
|        Project C         |     8     |
|        Project D         |     2     |
+--------------------------+-----------+
|          Total           |     24    |
+--------------------------+-----------+

Я искал документацию по модулям онлайн: Учебное пособие по PrettyTable , Google prettytable - Учебное пособие и не вижу ссылок на нижний колонтитул, что я нахожу удивительным, учитывая, что заголовок один.Это можно сделать в PrettyTable или есть другой модуль Python с такой функциональностью, который кто-нибудь может порекомендовать?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

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

sum = 0
for row in outTbl:
     sum = sum + int(row.get_string(fields=["Number"]).split('\n')[3].replace('|','').replace(' ',''))
outTbl.add_row(['------------','-----------'])
outTbl.add_row(['Total',sum])
print (outTbl)

Output

или если вы ищете определенную функцию с нижними колонтитулами, вы можете посмотреть на https://stackoverflow.com/a/26937531/3249782 для разных подходов вы можете использовать

0 голосов
/ 15 мая 2019

Вы можете использовать texttable с небольшим взломом:

import texttable

table = texttable.Texttable()
table.add_rows([['Projects', 'Number'],
                ['Project A\nProject B\nProject C\nProject D', '5\n9\n8\n2'],
                ['Total', 24]])
print(table.draw())

Выход:

+-----------+--------+
| Projects  | Number |
+===========+========+
| Project A | 5      |
| Project B | 9      |
| Project C | 8      |
| Project D | 2      |
+-----------+--------+
| Total     | 24     |
+-----------+--------+
...