如何使用Python 3.6右对齐带小数点的数字

时间:2017-06-07 21:03:11

标签: python

我正在寻找一种方法来对输出中的数字进行右对齐,以便所有小数点排成一行,使用Python 3.6.1。

我使用的一般格式是:

print('Bonus: $',format(bonus, ',.2f'),sep='') 

但我无法弄清楚如何让数字正确对齐并保持货币格式。这是一张输出图片:

Sales Output

2 个答案:

答案 0 :(得分:1)

链接字符串格式化程序有效:

>>> "Cash Money: %10s" % "$%.2f" % 6.124
'Cash Money:      $6.12'

第一个添加符号&格式化数字,第二个填充到适当的长度。

以更现实的方式使用:

str_bal = "$%.2f" % bal
print "Balance: %20s" % str_bal

一个真实世界的例子:

我已经构建了一个通过混合格式字符串智能调整大小的报告:

format_string = "%-9s %-{}s %6.3f%% (%{}i/%{}i) total events: %{}i".format(
                 max_len_key, max_len_pos, max_len_total, max_len_events)
for entry in table:
    ...
    print format_string % (title, key, percent, pos, total, event)

输出:

Version:  1.0.0.0  2.688% (10/372) total events: 150
Version:  1.4.1.15 0.000% ( 0/181) total events:  73

注意:你可以在不混合格式化的情况下做到这一点,但我认为这比憎恶"%%-9s %%-%is %%6.3f%%%% (%%%ii/%%%ii) total events: %%%ii"(这是第一个格式字符串的有效替代)更清晰。

答案 1 :(得分:1)

您可以使用:

print('{:<15}: {:>10.2f}'.format('Bonus', bonus),sep='') 

&gt;在.2f处理小数点时,需要正确对齐。