Python 格式化表格输出
我在用python2.7,想把表格数据打印到屏幕上。
我的代码大概是这样的:
for i in mylist:
print "{}\t|{}\t|".format (i, f(i))
问题是,根据变量 i
或者 f(i)
的长度,数据就对不齐了。
我现在得到的结果是:
|foo |bar |
|foobo |foobar |
我想要的结果是:
|foo |bar |
|foobo |foobar |
有没有什么模块可以做到这一点呢?
6 个回答
23
24
想要让表格看起来更漂亮,可以使用一个叫做 tabulate 的模块:
下面是 tabulate 文档中的一个例子:
>>> from tabulate import tabulate
>>> table = [["Sun",696000,1989100000],["Earth",6371,5973.6],
... ["Moon",1737,73.5],["Mars",3390,641.85]]
>>> print(tabulate(table))
----- ------ -------------
Sun 696000 1.9891e+09
Earth 6371 5973.6
Moon 1737 73.5
Mars 3390 641.85
----- ------ -------------
32
其实自己写一个格式化函数并不难:
def print_table(table):
col_width = [max(len(x) for x in col) for col in zip(*table)]
for line in table:
print "| " + " | ".join("{:{}}".format(x, col_width[i])
for i, x in enumerate(line)) + " |"
table = [(str(x), str(f(x))) for x in mylist]
print_table(table)