Распечатайте таблицу с выровненными столбцами в Python [дубликат]Python

Программы на Python
Ответить
Anonymous
 Распечатайте таблицу с выровненными столбцами в Python [дубликат]

Сообщение Anonymous »

У меня есть таблица классов с кортежем под названием header

Код: Выделить всё

self.header = ("Column_1", "Column_2", "Column_3", "Column_4", "Column_5")
и словарь кортежей под названием __entries, которые добавляются с помощью функции:

Код: Выделить всё

"""@brief Creates a new entry"""
def addEntry(self, column_1 : str , column_2 : str, column_3 : bool, column_4 : List[str], column_5 : Callable[[],None]) -> None:
self.__entries[column_1] = (column_1, column_2, column_3, column_4, column_5)
Я хочу напечатать заголовок и все записи в виде отформатированной таблицы. Моя текущая попытка:

Код: Выделить всё

"""@brief Print the header and all entries as a table"""
def print(self) -> None:
print("|\t" + self.header[0] + "\t|\t" + self.header[1] + "\t|\t" + self.header[2] + "\t|\t" + self.header[3]+ "\t|" + self.header[4]+ "\t|")
for key in self.__entries:
entry = self.__entries[key]
print("|\t" + entry[0] + "\t|\t" + entry[1] + "\t|\t" + str(entry[2]) + "\t|\t" + str(entry[3]) + "\t|\t" + str(entry[4])+ "\t|")
Но, очевидно, это не меняет размеры столбцов, и поэтому программа:

Код: Выделить всё

def Foo() -> None:
print(HelloWorld)

def Bar() -> None:
print(HelloWorld)

def Baz() -> None:
print(HelloWorld)

if __name__== "__main__":
table = Table()
table.addEntry("test","Craig",False,[], Foo)
table.addEntry("test2","Bob",False,[], Bar)
table.addEntry("test3","Bill",False,[], Baz)

methodRegistry.print()
Выходы:

Код: Выделить всё

|       Column_1        |       Column_2        |       Column_3        |       Column_4        | Column_5      |
|       test    |       Craig   |       False   |       []      |               |
|       test2   |       Bob     |       False   |       []      |               |
|       test3   |       Bill    |       False   |       []      |               |
Я новичок в Python, но думаю, что есть простой способ сделать это без необходимости вручную вычислять ширину каждой строки и соответствующим образом настраивать ее.

Полный исходный код можно найти здесь: https://gitlab.com/snippets/1936949

Подробнее здесь: https://stackoverflow.com/questions/600 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»