解决Python格式化输出的对齐问题

Python的print函数输出制表符’ ’有时候会出现因为字符串长度问题,导致制表符无法使用’ ’制表符对齐输出。

解决方案1

在Python中可以通过%s控制字符串长度输出使其格式化对齐输出:

    %-10s,可以实现字符串左对齐输出,间隔10个字符 %+20s,可以实现字符串右对齐输出,间隔20个字符

示例代码片段1(右对齐):

name = [alice, bob, cindy, david]
age = [12, 13, 15, 17]
score = [89, 98, 90, 69]

for item in [name, age, score]:
    print(%+10s	 % item, end=)

print()

for i in range(len(name)):
    print(%+10s	%+10s	%+10s	 % (name[i], age[i], score[i]))

输出如下:

name	       age	     score	
     alice	        12	        89	
       bob	        13	        98	
     cindy	        15	        90	
     david	        17	        69

示例代码片段2(左对齐):

name = [alice, bob, cindy, david]
age = [12, 13, 15, 17]
score = [89, 98, 90, 69]

for item in [name, age, score]:
    print(%-10s	 % item, end=)

print()

for i in range(len(name)):
    print(%-10s	%-10s	%-10s	 % (name[i], age[i], score[i]))

输出如下:

name      	age       	score     	
alice     	12        	89        	
bob       	13        	98        	
cindy     	15        	90        	
david     	17        	69

解决方案2

例如,有一个字典如下:

myDict = {
          
   
    name: python,
    url: www.python.com,
    address: China,
    isNonProfit: true,
}

想要获得对齐的输出,可以这样做:

1、首先获取字典的最大值max(map(len, dic.keys())) 2、然后使用Str.rjust() 右对齐 或者Str.ljust() 左对齐 或者Str.center() 居中输出。

"""
string.ljust(width) 返回一个原字符串左对齐,并使用(英文)空格填空至长度width的新字符串
string.rjust(width) 返回一个原字符串右对齐,并使用(英文)空格填空至长度width的新字符串
string.center(width) 返回一个原字符串居中,并使用(英文)空格填空至长度width的新字符串
"""

示例代码如下:

>>> myDict = {
          
   
...     name: python,
...     url: www.python.com,
...     address: China,
...     isNonProfit: true,
... }
>>>
>>> d = max(map(len, myDict.keys()))
>>>
>>> for k in myDict:
...     print(k.ljust(d), :, myDict[k])
...
name        : python
url         : www.python.com
address     : China
isNonProfit : true
>>> for k in myDict:
...     print(k.rjust(d), :, myDict[k])
...
       name : python
        url : www.python.com
    address : China
isNonProfit : true
>>> for k in myDict:
...     print(k.center(d), :, myDict[k])
...
    name    : python
    url     : www.python.com
  address   : China
isNonProfit : true

关于Str.ljust()、Str.rjust()、Str.center()还有这样的用法:

>>> s = bleach
>>> s.ljust(10,!)
bleach!!!!
>>> s.rjust(10,!)
!!!!bleach
>>> s.center(10,!)
!!bleach!!

解决方案3

:^ 表示居中对齐 :< 表示居左对齐 :> 表示居右对齐

示例代码如下:

>>> print({0:<10}|{1:>10}.format(naruto, bleach))
naruto    |    bleach
>>> print({0:>10}|{1:<10}.format(naruto, bleach))
    naruto|bleach    
>>> print({0:^10}|{1:^10}.format(naruto, bleach))
>  naruto  |  bleach

END

参考文献

经验分享 程序员 微信小程序 职场和发展