首页 > 解决方案 > 使用python中的格式打印列中的n行

问题描述

我想将 n 行打印成列。列大小取决于每行中最长的数据。

我有类似的东西

data = [['abcdefghijk', 'b','c'],['121','313','5441256652'],['--','310','36']['642','65','10']]

并想把它变成

abcdefghijk    121           --     642
b              313           310    65
c              5441256652    36     10

每列宽度是行中最长元素的长度 + 4

我知道在这种情况下我可以使用

row_format ='{:<15}{:<14}{:<7}{:<7}'
for v in zip(*data):
    print (row_format.format(*v))

但是,我如何在不事先知道元素长度的情况下获得具有 n 行数据的相同模式?

标签: pythonlistformat

解决方案


您可以动态构建row_format字符串:

row_format = ''.join(f'{{:<{len(max(x, key=len)) + 4}}}' for x in data)
for v in zip(*data):
    print (row_format.format(*v))

例如,这个数据

data = [['a', 'bbbbbb', 'c'],
        ['121', '313', '0'],
        ['------', '310', '36'],
        ['3', '455', '5']]

以这种方式打印:

a         121    ------    3      
bbbbbb    313    310       455    
c         0      36        5

推荐阅读