#!/usr/bin/env python
class ALIGN:
LEFT, RIGHT = '-', ''
class Column(list):
def __init__(self, name, data, align=ALIGN.RIGHT):
list.__init__(self, data)
self.name = name
width = max(len(str(x)) for x in data + [name])
self.format = ' %%%s%ds ' % (align, width)
class Table:
def __init__(self, *columns):
self.columns = columns
self.length = max(len(x) for x in columns)
def get_row(self, i=None):
for x in self.columns:
if i is None:
yield x.format % x.name
else:
yield x.format % x[i]
def get_rows(self):
yield ' '.join(self.get_row(None))
for i in range(0, self.length):
yield ' '.join(self.get_row(i))
def __str__(self):
return '\n'.join(self.get_rows())
例如:if __name__ == '__main__':
print Table(
Column("", [234, 32, 23456]),
Column("", [127, 12, 2]),
Column("", [34, 4, 1]),
Column("", [23, 4, 444]),
Column("", [45567, 45, 567])
)
它将产生:234 127 34 23 45567
32 12 4 4 45
23456 2 1 444 567