我正在寻找一种方法来对输出中的数字进行右对齐,以便所有小数点排成一行,使用Python 3.6.1。
我使用的一般格式是:
print('Bonus: $',format(bonus, ',.2f'),sep='')
但我无法弄清楚如何让数字正确对齐并保持货币格式。这是一张输出图片:
答案 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处理小数点时,需要正确对齐。