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