在控制台print时如何对齐字符串?
大家好,欢迎来到 Crossin的编程教室 !
很多同学在使用命令行输出数据时都遇到一个问题:不同长度的字符无法对齐,即使用 \t 也会有问题,导致结果不够美观。
今天就给大家介绍在命令行打印字符串时,按规则对齐的两种方法,帮助大家在 shell 界面下输出漂亮的表格。
第一种:使用 format
先来看几个小 demo
左对齐
>>> "{:<10}".format("a")
'a '
>>>
右对齐
>>> "{:>10}".format("a")
' a'
>>>
居中
>>> "{:^10}".format("a")
' a '
>>>
当你不指定 <
、>
、^
时,默认就是左对齐
>>> "{:10}".format("a")
'a '
>>>
有了上面的铺垫,写一个整齐的 1-10 的平方、立方表就很容易了。
>>> for x in range(1, 11):
... print('{:2d} {:3d} {:4d}'.format(x, x*x, x*x*x))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
对齐的思想其实就是在不足的位自动给你补上空格。
如果不想使用空格,可以指定你想要的字符进行填充,比如下面我用 0
来补全。
>>> for x in range(1, 11):
... print('{:02d} {:03d} {:04d}'.format(x, x*x, x*x*x))
...
01 001 0001
02 004 0008
03 009 0027
04 016 0064
05 025 0125
06 036 0216
07 049 0343
08 064 0512
09 081 0729
10 100 1000
第二种:使用 ljust, rjust
左对齐
>>> "a".ljust(10)
'a '
>>>
右对齐
>>> "a".rjust(10)
' a'
>>>
居中
>>> "a".center(10)
' a '
>>>
同样写一个整齐的 1-10 的平方、立方表
>>> for x in range(1, 11):
... print(' '.join([str(x).ljust(2), str(x * x).ljust(3), str(x * x * x).ljust(4)]))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
如果不想使用空格,而改用 0 来补齐呢?可以这样
>>> for x in range(1, 11):
... print(' '.join([str(x).rjust(2, "0"), str(x*x).rjust(3, "0"), str(x*x*x).rjust(4, "0")]))
...
01 001 0001
02 004 0008
03 009 0027
04 016 0064
05 025 0125
06 036 0216
07 049 0343
08 064 0512
09 081 0729
10 100 1000
以上就是今天的分享,很多漂亮的表格打印模块都是基于以上内置函数实现的,掌握了这两个,以后都可以自己实现啦!
如果文章对你有帮助,欢迎转发/点赞/收藏~
作者:写代码的明哥
_往期文章推荐_
评论