解决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
参考文献