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

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

解决方案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\t' % item, end='')

print()

for i in range(len(name)):
    print('%+10s\t%+10s\t%+10s\t' % (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\t' % item, end='')

print()

for i in range(len(name)):
    print('%-10s\t%-10s\t%-10s\t' % (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

参考文献
Python制表符\t无法对齐问题
python怎么右对齐
python基础-文本对齐(居中,左对齐,右对齐)

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值