我必须打印几行数据并做好准备。我可以用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模块。有可能吗?谢谢!

最佳答案

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

埃塔:我最初的回答没有提到你希望每一列都是固定宽度的,使用填充的空格(而不是制表符)。看起来在最长的基准面和下一列之间正好需要两个空格。在这种情况下,可以执行以下操作(注意,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])

10-08 19:43