Формат спецификации для отображения пустым (пустая строка) для нуля (0) - PullRequest
3 голосов
/ 15 декабря 2010

Есть ли опция в спецификации формата для отображения нулевых значений как пустых, в противном случае использовать формат?

>>> 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 ]

7 голосов
/ 15 декабря 2010

Нет, в настоящее время вы не можете сделать это через спецификацию формата Python.Вместо этого используйте условное выражение.Например:

print(format(a, '+010,.2f') if a else "")
0 голосов
/ 17 декабря 2010

Python не имеет функции разделителя разделов, поэтому вы можете иметь разные форматы для положительных, отрицательных или нулевых чисел в одной строке.Вам придется использовать отдельные строки формата.

0 голосов
/ 16 декабря 2010

Как насчет определения функции:

def format_cond(val,fmt,cond=bool,otherwise=''):
    return format(val, fmt) if cond(val) else otherwise
0 голосов
/ 15 декабря 2010
if a:
    print(...)
0 голосов
/ 15 декабря 2010

format делает много вещей, но это не то, для чего он предназначен. Существует также очень простое решение:

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