2011-11-18 69 views
1

任何人都可以向我解釋以下內容。轉換以零開頭的數字

i = 700001 
z = str(i % 100000) 

z ='1',但我想要z ='00001'。我怎麼能得到它?

+3

如果'i = 2700001',你想做什麼?你想要00001還是000001?換句話說,你的問題是不健全的。 –

+1

在你的程序中,python會先評估(700001%100000)爲1,然後計算str(1)。你必須明白str函數並不關心它的參數來自哪裏。它會將它們轉換爲一個字符串(用最簡單的表示法)。 – Simon

回答

4

另一種解決方案:

>>> z.zfill(5) 
'00001' 
6

這樣做:

z = '{:05}'.format(i % 100000) 
+0

或'格式(i%100000,「05」)'。 –

+2

我以爲我相當熟悉Python,但我不得不說,我對有多少種不同的方式來做這個簡單的事情感到震驚,其中一些我以前從未見過。 –

+0

強制鏈接格式文檔:http://docs.python.org/library/string.html#format-string-syntax(順便說一下,不是文檔的最佳部分)。 – madjar

2

使用str.rjust

>>> s = '1' 
>>> s.rjust(5, '0') 
'00001' 
+0

請注意,'str.rjust()'與'str.zfill()'不同,它不是標誌感知的。 –

2

Python string formatting

z = '%05d'%(i % 100000) 
+0

+1這是我自然會這樣做的方式。不過,重要的是要注意'%'符號的非常不同的含義。 –

相關問題