Python - 使用间距格式打印数字

时间:2016-08-24 18:47:53

标签: python string list format number-formatting

我们说我有一组数字

list = [(4, 3, 7, 23),(17, 4021, 4, 92)]

我希望以这种方式打印数字,以便输出看起来像这样:

[   4  |   3  |   7  |  23  ] 
[  17  | 4021 |   4  |  92  ]

数字尽可能居中,并且" |"之间有足够的空间。允许4位数字,两边各有两个空格。

我该怎么做?

谢谢。

3 个答案:

答案 0 :(得分:2)

您还可以使用PrettyTabletexttable等第三方。使用texttable的示例:

import texttable

l = [(4, 3, 7, 23),(17, 4021, 4, 92)]

table = texttable.Texttable()
# table.set_chars(["", "|", "", ""])
table.add_rows(l)

print(table.draw())

会产生:

+----+------+---+----+
| 4  |  3   | 7 | 23 |
+====+======+===+====+
| 17 | 4021 | 4 | 92 |
+----+------+---+----+

答案 1 :(得分:2)

str.center可以让事情变得更轻松。

for i in list:
    print '[ ' + ' | '.join([str(j).center(4) for j in i]) + ' ]'

输出:

[  4   |  3   |  7   |  23  ]
[  17  | 4021 |  4   |  92  ]

如果您需要替代解决方案,可以使用str.format

for i in list:
    print '[ ' + ' | '.join(["{:^4}".format(j) for j in i]) + ' ]'

输出:

[  4   |  3   |  7   |  23  ]
[  17  | 4021 |  4   |  92  ]

答案 2 :(得分:0)

这里:

list = [[4, 3, 7, 23],[17, 4021, 4, 92]]

for sublist in list:
    output = "["
    for index, x in enumerate(sublist):
        output +='{:^6}'.format(x) 
        if index != len(sublist)-1:
            output += '|'  
    output +=']'
    print output 

输出:

[  4   |  3   |  7   |  23  ]
[  17  | 4021 |  4   |  92  ]