格式规范显示空白(空字符串)为零(0)

时间:2010-12-15 15:24:51

标签: python python-3.x string-formatting

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

>>> 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在标准库中没有它,请确认这一点,我将接受它作为答案。

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

if a:
    print(...)

答案 3 :(得分:0)

如何定义函数:

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

答案 4 :(得分:0)

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