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----.

浙公网安备 33010602011771号