簡體   English   中英

Python 漂亮的矩陣打印

[英]Python's pretty printing of matrix

我必須打印幾行數據並做好。 我可以用 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])

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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM