Python非常漂亮的矩阵打印

时间:2012-01-05 18:10:17

标签: python regex string list

我必须打印几行数据并做好。我可以用C ++更改std :: cout的参数来做到这一点,但我无法理解如何用Python做到这一点。例如,我有这个:

row1 = [1, 'arc1.tgz', 'First', '15.02.1992']
row2 = [16, 'arc2modified.tgz', 'Second', 'today']
row3 = ['112', 'arc89.tgz', 'Corrupted', 'unknown']

我想打印这样的文字:

1    arc1.tgz          First      15.02.1992
16   arc2modified.tgz  Second     today
112  arc89.tgz         Corrupted  unknown

将它放在一个列表然后计算每个字符串中的符号然后添加空格似乎是一个聪明的主意,但我想知道是否有更聪明的方法来做它。

主要问题是我只能使用默认的Python模块。有没有可能做到这一点?非常感谢!

1 个答案:

答案 0 :(得分:9)

my_matrix = [row1, row2, row3]
print "\n".join(["\t".join(map(str, r)) for r in my_matrix])

ETA:我原来的答案错过了你想要每个列都是固定宽度,使用填充空格(而不是制表符)。看起来你想要在最长的数据和下一列之间只有两个空格。在这种情况下,可以按如下方式完成(注意 string 是一个内置的默认Python模块):

import string

max_lens = [max([len(str(r[i])) for r in my_matrix])
                for i in range(len(my_matrix[0]))]

print "\n".join(["".join([string.ljust(str(e), l + 2)
                for e, l in zip(r, max_lens)]) for r in my_matrix])