为了账号安全,请及时绑定邮箱和手机立即绑定

在python中创建漂亮的列输出

在python中创建漂亮的列输出

偶然的你 2019-08-31 16:39:03
我试图在python中创建一个很好的列列表,用于我创建的命令行管理工具。基本上,我想要一个列表,如:[['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]变成:a            b            caaaaaaaaaa   b            ca            bbbbbbbbbb   c使用普通标签不会在这里做,因为我不知道每行中最长的数据。这与Linux中的'column -t'行为相同。$ echo -e "a b c\naaaaaaaaaa b c\na bbbbbbbbbb c"a b caaaaaaaaaa b ca bbbbbbbbbb c$ echo -e "a b c\naaaaaaaaaa b c\na bbbbbbbbbb c" | column -ta           b           caaaaaaaaaa  b           ca           bbbbbbbbbb  c我已经四处寻找各种python库来做到这一点,但找不到任何有用的东西。
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

data = [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]


col_width = max(len(word) for row in data for word in row) + 2  # padding

for row in data:

    print "".join(word.ljust(col_width) for word in row)


a            b            c            

aaaaaaaaaa   b            c            

a            bbbbbbbbbb   c   

这样做是计算最长的数据条目以确定列宽,然后用于.ljust()在打印每列时添加必要的填充。


查看完整回答
反对 回复 2019-08-31
?
DIEA

TA贡献1820条经验 获得超2个赞

从Python 2.6+开始,您可以按以下方式使用格式字符串将列设置为最少20个字符,并将文本对齐。


table_data = [

    ['a', 'b', 'c'],

    ['aaaaaaaaaa', 'b', 'c'], 

    ['a', 'bbbbbbbbbb', 'c']

]

for row in table_data:

    print("{: >20} {: >20} {: >20}".format(*row))

输出:


               a                    b                    c

      aaaaaaaaaa                    b                    c

               a           bbbbbbbbbb                    c


查看完整回答
反对 回复 2019-08-31
?
暮色呼如

TA贡献1853条经验 获得超9个赞

我带着相同的要求来到这里,但@lvc和@Preet的答案似乎更符合column -t那些列中产生的宽度不同的内容:


>>> rows =  [   ['a',           'b',            'c',    'd']

...         ,   ['aaaaaaaaaa',  'b',            'c',    'd']

...         ,   ['a',           'bbbbbbbbbb',   'c',    'd']

...         ]

...

>>> widths = [max(map(len, col)) for col in zip(*rows)]

>>> for row in rows:

...     print "  ".join((val.ljust(width) for val, width in zip(row, widths)))

...

a           b           c  d

aaaaaaaaaa  b           c  d

a           bbbbbbbbbb  c  d


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 650 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信