Python:打印列表作为表格列表

new*_*101 1 python list

我是python的新手,正在经历一个问题.我有一个文本文件,我将其读入列表,然后将其分成块或"团队".子列表的数量是根据我想要的团队数量创建的.这一切都完成了.但我想以一种漂亮的表格格式打印出来.我已经调查了以下这个,这个这个问题,但它们不是我想要的.我甚至看过pypi模块PrettyTable和DataGrid.

我的最终列表如下所示:

['name9', 'name2'], ['name4', 'name11'], ['name10', 'name3'], ['name7', 'name6'], ['name5', 'name8'], ['name']]
Run Code Online (Sandbox Code Playgroud)

我打印出来像这样:

for i in range(len(l)):
    print "Teams{}\t\t ".format(i+1),
print
for x in itertools.izip_longest(*l, fillvalue="."):
    print "\n"
    t =  "\t\t ".join(str(i) for i in x)
    print t
Run Code Online (Sandbox Code Playgroud)

结果如下:

Teams1        Teams2          Teams3          Teams4          Teams5          Teams6


name9        name4       name10      name7       name5       name


name2        name11      name3       name6       name8       .
Run Code Online (Sandbox Code Playgroud)

有什么方法可以得到这样的输出:

Team 1      Team 2      Team 3      Team 4      Team 5      Team 6
-------------------------------------------------------------------
name9       name4       name10      name7       name5       name
name2       name11      name3       name6       name8       .
Run Code Online (Sandbox Code Playgroud)

并恰好对齐它们?

Ben*_*Ben 6

或者,如果您不想使用第三方库:

from itertools import izip_longest

data = [['name9', 'name2'], ['name4', 'name11'], ['name10', 'name3'], ['name7', 'name6'], ['name5', 'name8'], ['name']]

length = max(len(name) for names in data for name in names)
gutter = 5

format_string = '{{:<{}}}'.format(length + gutter)

print ''.join(format_string.format('Team {}'.format(x)) for x in range(len(data)))
print '-' * len(data) * (length + gutter)
for names in izip_longest(*data, fillvalue='.'):
    print ''.join(format_string.format(name) for name in names)
Run Code Online (Sandbox Code Playgroud)

生产:

Team 0     Team 1     Team 2     Team 3     Team 4     Team 5
------------------------------------------------------------------
name9      name4      name10     name7      name5      name
name2      name11     name3      name6      name8      .
Run Code Online (Sandbox Code Playgroud)