Python 矩阵的美观打印
我需要打印几行数据,而且要打印得好看。我可以用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 个回答
9
my_matrix = [row1, row2, row3]
print "\n".join(["\t".join(map(str, r)) for r in my_matrix])
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])
补充说明:我之前的回答没有注意到你想要每一列的宽度是固定的,使用的是空格填充(而不是制表符)。看起来你还希望最长的数据和下一个列之间有两个空格。这样的话,可以按照下面的方式来做(注意string是Python自带的一个模块):