格式说明符显示零(0)为空字符串

5 投票
6 回答
5015 浏览
提问于 2025-04-16 08:34

格式规范 中,有没有选项可以把零值显示为空白,而其他值则使用格式化显示呢?

>>> from decimal import Decimal
>>> '{:+010,.2f}'.format(Decimal('1234.56'))
'+01,234.56'
>>> '{:???f}'.format(Decimal(0))
''
>>> 

更新:

我需要的效果和这里的一样:

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SectionSeparator

如果Python的标准库里没有这个功能,请确认一下,我会把这个作为答案接受。

6 个回答

0

我们可以定义一个函数:

def format_cond(val,fmt,cond=bool,otherwise=''):
    return format(val, fmt) if cond(val) else otherwise
0

Python没有一种可以分隔不同类型数字的功能,所以你不能在同一个字符串里对正数、负数和零使用不同的格式。你需要使用不同的格式字符串来处理它们。

8

不,目前你不能通过Python的格式说明来实现这个功能。可以使用条件表达式来代替。比如:

print(format(a, '+010,.2f') if a else "")

撰写回答