python: colspan в текстовой таблице

table = Texttable()
table.set_deco(Texttable.HEADER | Texttable.VLINES | Texttable.HLINES | Texttable.BORDER)
table.add_rows([ ["Name", "Age", "Nickname"],
                     ["Xavier Huon", 32, "Xav'"],
                     ["Baptiste Clement", 1, "Baby"] ])
print table.draw()

результат:

как я могу это сделать?

1 ответ

Там нет действительно хороший способ сделать это с texttable, Например, кажется, что он не понимает, что могут быть дополнительные сгруппированные списки под основным заголовком.

Вместо этого вы можете сделать это с помощью некоторого умного форматирования:

>>> table = Texttable()
>>> table.set_deco(Texttable.HEADER | Texttable.VLINES | Texttable.HLINES | Texttable.BORDER)
>>> 
>>> table.add_rows([ ["Name\nfirst   |   last", "Age", "Nickname"],
...                      ["Xavier   |    Huon", 32, "Xav'"],
...                      ["Baptiste | Clement", 1, "Baby"] ])
>>> print table.draw()
+--------------------+-----+----------+
|        Name        | Age | Nickname |
|  first   |   last  |     |          |
+====================+=====+==========+
| Xavier   |    Huon | 32  | Xav'     |
+--------------------+-----+----------+
| Baptiste | Clement | 1   | Baby     |
+--------------------+-----+----------+

Единственной проблемой будет выравнивание first а также last Назовите элементы, если таблица станет больше с более длинным именем. Вы можете, однако, сделать некоторую математику, чтобы определить наибольшее имя, а затем использовать форматирование строки, чтобы выровнять его по левому и правому краям. Я оставлю это в качестве упражнения для читателя (и, по- видимому, двойной плакат).

Другие вопросы по тегам