python : Print list of list as tables

标签 python list

我是 python 新手,遇到了一个问题。我有一个文本文件,我将其读入列表,然后将其分成 block 或“团队”。子列表的数量是根据我想要的团队数量创建的。这一切都完成了。但我想以漂亮的表格格式打印出来。我调查了以下问题 this , thisthis ,但它们不是我要找的。我什至看过 pypi 模块 PrettyTable 和 DataGrid。

我的最终列表如下所示:

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

我打印出来是这样的:

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

结果是:

Teams1        Teams2          Teams3          Teams4          Teams5          Teams6


name9        name4       name10      name7       name5       name


name2        name11      name3       name6       name8       .

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

Team 1      Team 2      Team 3      Team 4      Team 5      Team 6
-------------------------------------------------------------------
name9       name4       name10      name7       name5       name
name2       name11      name3       name6       name8       .

然后正确对齐它们?

最佳答案

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

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)

产生:

Team 0     Team 1     Team 2     Team 3     Team 4     Team 5
------------------------------------------------------------------
name9      name4      name10     name7      name5      name
name2      name11     name3      name6      name8      .

关于 python : Print list of list as tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995612/

相关文章:

python - 提高性能 : Remove all strings in a (big) list appearing only once

html - 列表样式 none 不应用 + li 边框

python - @api.constrains 在 Odoo 8 中如何工作?

python - 在 Plotly 或 Python 中的 Bokeh 中的 map 上绘制散点饼图

python - 阿拉伯语 - Python 2.7 中的 UnicodeDecodeError

python - 组合多个正则表达式替换

r - 选择列表中的列并将其替换为名称

asp.net - ASP.Net 中 UI 层的 List<> 比 DataSet 更好吗?

java - 优化android中列表的支持

list - 在线性时间内查找不在列表中的最小非负整数,仅使用列表