2014-04-09 16 views
0

我開始進入編程領域,但無法破譯我從Python.org上得到的答案,而且看起來沒有人問過這個問題。什麼是Python的字符串操作的寬度的默認設置,它是如何不同於「0」?

我試圖找出

"You have $%.2f left in your piggy bank" % totalCash 

"You have $%0.2f left in your piggy bank" % totalCash 

之間的差額按照書上的我學習(Python編程:計算機科學導論,由約翰·Zelle) :「您可以使用0的寬度來表示」根據需要使用盡可能多的空間「。沒有任何意義的是,它已經在使用盡可能多的空間。如果我放入,我的變量爲100000.42它仍然打印正確的數量無論我是否將「0」作爲寬度或不是。

輸出完全相同。

所以,在我看來,「0」的默認設置寬度,但後來我看了看Python.org文檔和他們說同樣的事情,但也有一些非常技術性的話我不明白

「由零之前的寬度字段(‘0’)字符能夠登錄感知零填充爲數值類型。這相當於‘0’與‘=’的取向類型的填充字符」

我完全不明白這一點,但我確實理解這下一行,它聽起來像是我認爲的「0」所做的一樣:

「width is一個定義最小字段寬度的十進制整數。如果未指定,則字段寬度將由內容決定。 「

那麼有什麼區別,任何人都可以解釋一下嗎?

我使用Python 2.7

回答

1

注意,無論是現在做事情的正確方法。現在我們使用string formatting,但類似的格式存在。

基本上,使用0的裝置如果數據是比你的寬度短,將填零來填補的寬度。

>>> "{:8}".format(12) 
'  12' 
>>> "{:08}".format(12) 
'00000012' # different when data is shorter than width 
>>> "{:8}".format(1234567890) 
'1234567890' 
>>> "{:08}".format(1234567890) 
'1234567890' # no difference when data is longer than width 

在舊式string interpolation,這將是:

>>> "%8d" % 12 
'  12' 
>>> "%08d" % 12 
'00000012' 
>>> "%8d" % 1234567890 
'1234567890' # still no change 
>>> "%08d" % 1234567890 
'1234567890' # when data is longer than width 
+0

可能使用不同的數字來表示區別? – vaultah

+0

@traceur好想法。編輯。 –

+0

嘿亞當,非常感謝!我看到如何在指定寬度前添加0使其「填滿」輸出。 那麼這個「0」本身沒有做什麼? (就像我想的那樣) 我正在研究舊的字符串插值的那種打擊。那是用Python 3+替換的嗎?你有沒有關於好書的建議來閱讀最近的東西?我正在進行長期職業編程,並且正在掌握我所能學到的一切。 –

0

0格式字符必須跟着你想達到的width

>>> "You have $%08.2f left in your piggy bank" % 1.2 
'You have $00001.20 left in your piggy bank' 
>>> "You have $%08.2f left in your piggy bank" % 10.2 
'You have $00010.20 left in your piggy bank' 
相關問題