2010-12-15 92 views
3

format specification中是否有一個選項將零值顯示爲空白,否則使用格式?格式規格顯示空白(空字符串)爲零(0)

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

UPDATE:

我需要這裏相同的行爲:

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

如果Python沒有它的標準庫,請證實,我會接受它作爲答案。

+0

這裏是一個類似的問題爲.NET http://stackoverflow.com/questions/2282573/using-net-string-formatting-how-do-i-format-a-string-to-display-blank-empty -st – warvariuc 2010-12-15 15:43:00

+0

對不起,你可以顯然沒有一種格式,它將同時用前導零,小數點後兩位和最小十位寬度打印。用上面的格式打印一個零點正確給出「+00,000.00」。因此,無論你做什麼,你都必須使它成爲零的條件。在這種情況下,你可以跳過它。所以下面的所有答案都是正確的。 – 2010-12-15 21:22:17

+0

也許我不清楚 - 我需要一個格式化程序選項。在.NET的問題鏈接是可能的。 – warvariuc 2010-12-16 08:27:05

回答

0

Python沒有一節分隔功能,因此您可以在同一個字符串中使用不同格式的正數,負數或零數字。你將不得不使用單獨的格式字符串。

0

format做了很多事情,但這不是它的設計目的。還有一個非常簡單的解決方案:

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

呃,對不起,這只是令人不快 - 你不需要'== 0','print(「」)'(?!?!)或者'else'。 – katrielalex 2010-12-15 15:37:28

+0

我不能認爲這是一個答案。我需要格式規範選項,如果它存在 – warvariuc 2010-12-15 15:40:56

+2

但它不存在,所以人們發佈解決方法。 – kindall 2010-12-15 15:55:10

5

使用條件表達式:

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

如何定義一個函數:

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