12. 对字符串进行左、右、居中对齐

例如,某字典存储了一系列属性值:

{
    "lodDist": 100.0,
    "SmallCull": 0.04,
    "DostCull": 500.0,
    "trilinear": 40,
    "farclip": 477
}

要求:在程序中,以key的最大长度对齐,格式工整地将其内容输出:

lodDist   : 100.0
SmallCull : 0.04
DostCull  : 500.0
trilinear : 40
farclip   : 477

解决方案:

  1. 使用字符串的ljust()rjust()center()方法进行左、右、居中对齐;

  2. 使用内置函数format(),传递类似<20>20^20参数完成同样功能。


  • 对于字符串的ljust()rjust()center()方法:
s = ''
s.ljust(width, fillchar)

ljust()方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

width表示指定的字符串长度;fillchar表示填充字符,默认为空格,填充字符必须恰好只有一个字符长。

rjust()center()方法与ljust()方法类似。

  • 对于内置函数format()
s = 'abc'
print(format(s, '*<10'))
print(format(5, '*>10'))
print(format(-123, '0=+10'))

abc*******              #结果
*********5
-000000123

format()函数用于格式化字符串,format()函数调用的是__format__()方法。

^<>分别是居中、左对齐、右对齐,前面跟填充字符,后面跟宽度;=表示正负符号左对齐;+表示总输出正负符号。


  • 方案1示例:
d = {
    "lodDist": 100.0,
    "SmallCull": 0.04,
    "DostCull": 500.0,
    "trilinear": 40,
    "farclip": 477
}

w = max(map(len, d.keys()))

for k,v in d.items():
    print(k.ljust(w), ':', v)
    
lodDist   : 100.0               #结果
SmallCull : 0.04
DostCull  : 500.0
trilinear : 40
farclip   : 477

  • 方案2示例:
d = {
    "lodDist": 100.0,
    "SmallCull": 0.04,
    "DostCull": 500.0,
    "trilinear": 40,
    "farclip": 477
}

w = str(max(map(len, d.keys())))

for k,v in d.items():
    print(format(k, '<' + w), ':', v)
    
lodDist   : 100.0               #结果
SmallCull : 0.04
DostCull  : 500.0
trilinear : 40
farclip   : 477

注意,format()中不能直接写成format(k, ',会无法识别变量w。


你可能感兴趣的:(#,Python3编程)