Python 多个字符串对齐

使用ljust(字符串, 要填充的字符_默认填充空格)rjust(字符串, 要填充的字符_默认填充空格)

lst = [('aaa', '1', '|'), ('b', '22' , ';;'), ('cc', '333', '.')]

for (s1, s2, s3) in lst:
    print(s1.ljust(8) + s2.ljust(6) + s3.rjust(2))
# aaa     1      |
# b       22    ;;
# cc      333    .

for (s1, s2, s3) in lst:
    print(s1.ljust(8, '-') + s2.ljust(6, '-') + s3.rjust(2, '-'))
# aaa-----1------|
# b-------22----;;
# cc------333----.

 

解释:(此处的s1,s2,s3的长度都小于等于后面填的数字的大小)

s1.ljust(8, '-'):一共填充8个位置,从左向右顺序填s1中的字符,填完后,剩余的位置填'-'

s2.ljust(6, '-'):一共填充6个位置,同上

s3.rjust(2, '-'):一共填充2个位置,从右向左逆序填s3中的字符,填完后,剩余的位置填'-'

又因为这三个新的字符串是相加的,所以,最终会填充8+6+2=16个位置

 

 

 

等同于如下代码:

lst = [('aaa', '1', '|'), ('b', '22' , ';;'), ('cc', '333', '.')]

for (s1, s2, s3) in lst:
    # 顺序填入
    lst1 = ['-'] * 8
    for i in range(len(s1)):
        lst1[i] = s1[i]

    lst2 = ['-'] * 6
    for j in range(len(s2)):
        lst2[j] = s2[j]

    # 逆序填入(顺序填入,逆序输出也可)
    lst3 = ['-'] * 2
    for k in range(len(s3)):
        lst3[-1 - k] = s3[k]

    print(''.join(lst1) + ''.join(lst2) + ''.join(lst3))

# 输出:
# aaa-----1------|
# b-------22----;;
# cc------333----.

 

posted @ 2022-06-17 15:06  Alan_LJP  阅读(116)  评论(0)    收藏  举报