在Python中对齐输出?

Aligning output in Python?

有没有一种方法可以像这样正确对齐输出:

1
2
3
4
5
 Item: $  13.69
  Tax: $   5.30
  Oth: $   2.50  
---------------
Total: $  99.80

请注意,我使用的是python 3。


您可以使用字符串的.format方法来执行此操作:

1
2
3
4
5
6
7
fmt = '{0:>5}: ${1:>6.2f}'
print(fmt.format('Item', 13.69)) # Prints ' Item: $  13.69'
print(fmt.format('Tax', 5.3))
print(fmt.format('Oth', 2.5))
print('-'*len(fmt.format('Item', 13.69))) # Prints as many '-' as the length of the printed strings
print(fmt.format('Total', 99.8))
# etc...

_0:>5部分是说"取给.format的第0项,在5个空格内对其进行右对齐"。"1:>6.2f"部分是说,取给.format的第一项,在6个空格内右对齐,格式为小数点后两位。

当然,在实际代码中,这可能是循环的一部分。


使用字符串格式:

1
print("$%6s" % dec_or_string)


在文本与所有要对齐的项之间使用相同数量的空格。

另一种选择是使用str.format操作符,如本文所述。