3 回答
TA贡献1852条经验 获得超1个赞
data = [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]
col_width = max(len(word) for row in data for word in row) + 2 # padding
for row in data:
print "".join(word.ljust(col_width) for word in row)
a b c
aaaaaaaaaa b c
a bbbbbbbbbb c
这样做是计算最长的数据条目以确定列宽,然后用于.ljust()在打印每列时添加必要的填充。
TA贡献1820条经验 获得超2个赞
从Python 2.6+开始,您可以按以下方式使用格式字符串将列设置为最少20个字符,并将文本对齐。
table_data = [
['a', 'b', 'c'],
['aaaaaaaaaa', 'b', 'c'],
['a', 'bbbbbbbbbb', 'c']
]
for row in table_data:
print("{: >20} {: >20} {: >20}".format(*row))
输出:
a b c
aaaaaaaaaa b c
a bbbbbbbbbb c
TA贡献1853条经验 获得超9个赞
我带着相同的要求来到这里,但@lvc和@Preet的答案似乎更符合column -t那些列中产生的宽度不同的内容:
>>> rows = [ ['a', 'b', 'c', 'd']
... , ['aaaaaaaaaa', 'b', 'c', 'd']
... , ['a', 'bbbbbbbbbb', 'c', 'd']
... ]
...
>>> widths = [max(map(len, col)) for col in zip(*rows)]
>>> for row in rows:
... print " ".join((val.ljust(width) for val, width in zip(row, widths)))
...
a b c d
aaaaaaaaaa b c d
a bbbbbbbbbb c d
添加回答
举报