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
Назовите элементы, если таблица станет больше с более длинным именем. Вы можете, однако, сделать некоторую математику, чтобы определить наибольшее имя, а затем использовать форматирование строки, чтобы выровнять его по левому и правому краям. Я оставлю это в качестве упражнения для читателя (и, по- видимому, двойной плакат).