Python 格式化规格以显示零(0)的空白(空字符串)

Python 格式化规格以显示零(0)的空白(空字符串),python,python-3.x,string-formatting,Python,Python 3.x,String Formatting,中是否有选项将零值显示为空白,否则使用格式 >>> from decimal import Decimal >>> '{:+010,.2f}'.format(Decimal('1234.56')) '+01,234.56' >>> '{:???f}'.format(Decimal(0)) '' >>> 更新: 我需要和这里一样的行为: 如果Python在标准库中没有它,请确认这一点,我会接受它作为答案。format做了

中是否有选项将零值显示为空白,否则使用格式

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

我需要和这里一样的行为:


如果Python在标准库中没有它,请确认这一点,我会接受它作为答案。

format
做了很多事情,但这不是它的设计目的。还有一个非常简单的解决方案:

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

不,您目前不能通过Python格式规范来实现。改为使用条件表达式。例如:

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

如何定义一个函数:

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

Python没有节分隔符功能,因此可以在同一字符串中使用不同格式的正数、负数或零数。你必须使用单独的格式字符串。

uuh,抱歉,这是不愉快的——你不需要<代码> = 0 ,<代码>打印(“”)<代码>((!)),或者<代码>其他代码>代码>。我不能认为这是一个答案。我需要一个格式规范选项,如果它存在的话。对于.NET来说,这是一个类似的问题。很抱歉,但是很明显,您不能有一种格式同时打印前导零、两个小数和最小10宽,并且为空。使用上述格式正确打印零将显示“+00000.00”。所以,无论你做什么,你都必须以零为条件。在这种情况下,你可以跳过它。所以下面所有的答案都是正确的。也许我不清楚-我需要一个格式化程序选项。在.NET问题链接中,这是可能的。
def format_cond(val,fmt,cond=bool,otherwise=''):
    return format(val, fmt) if cond(val) else otherwise