Python: Создать рамку / прямоугольник / таблицу вне текста? - PullRequest
1 голос
/ 13 июля 2020

Я хотел бы иметь динамический / идеальный прямоугольник / прямоугольник / таблицу вне текста.

В этом примере у меня несколько переменных, расположенных в 3 строки.

проблема началась, когда длина строк различается.

Как мне решить эту проблему?

Пример кода

n1 = 1
i1 = 'Apple'
d1 = 'Fruit'

n2 = 2
i2 = 'Antelope'
d2 = 'Animal'

n3 = 3
i3 = 'Afghanistan'
d3 = 'Country'

print('--------------------------------')
print('| Number | Items | Description |')
print('--------------------------------')
print(f'|    {n1}   | {i1} |    {d1}    |')
print('--------------------------------')
print(f'|    {n2}   | {i2} |    {d2}    |')
print('--------------------------------')
print(f'|    {n3}   | {i3} |    {d3}    |')
print('--------------------------------')

Пример вывода

wolf@linux:~$ py script.py 
--------------------------------
| Number | Items | Description |
--------------------------------
|    1   | Apple |    Fruit    |
--------------------------------
|    2   | Antelope |    Animal    |
--------------------------------
|    3   | Afghanistan |    Country    |
--------------------------------
wolf@linux:~$ 

Желаемый выход

wolf@linux:~$ py script.py 
--------------------------------------
| Number | Items       | Description |
--------------------------------------
|    1   | Apple       |    Fruit    |
--------------------------------------
|    2   | Antelope    |    Animal   |
--------------------------------------
|    3   | Afghanistan |    Country  |
--------------------------------------
wolf@linux:~$ 

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Попробуйте модуль tabulate для автоматизации интервалов в каждой ячейке. Попробуйте следующее:

from tabulate import tabulate
n1 = 1
i1 = 'Apple'
d1 = 'Fruit'

n2 = 2
i2 = 'Antelope'
d2 = 'Animal'

n3 = 3
i3 = 'Afghanistan'
d3 = 'Country'
    
table_rows = [
    ['Number', 'Items', 'Description'],
    [n1, i1, d1],
    [n2, i2, d2],
    [n3, i3, d3]
]
print(tabulate(table_rows, tablefmt="fancy_grid"))

Вывод:

╒════════╤═════════════╤═════════════╕
│ Number │ Items       │ Description │
├────────┼─────────────┼─────────────┤
│ 1      │ Apple       │ Fruit       │
├────────┼─────────────┼─────────────┤
│ 2      │ Antelope    │ Animal      │
├────────┼─────────────┼─────────────┤
│ 3      │ Afghanistan │ Country     │
╘════════╧═════════════╧═════════════╛
0 голосов
/ 13 июля 2020

Вы можете использовать модуль tabulate Вот код того же

from tabulate import _table_formats, tabulate

table = [[1,"Apple","Fruit"], [2,"Antelope", "Animal"], [3,"Afghanistan", "Country"]]
headers = ["Number", "Items","Description"]

print(tabulate(table, headers, tablefmt="simple"))

Редактировать: Удалена ссылка, так как она нарушает правила форума

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...