2014-09-11 73 views
0

如何00024爲 '00024' 轉換與Python?如何將八進制轉換爲字符串而不更改該值?

如果我在Python shell中運行00024,其打印20結果。我想將00024轉換爲字符串,結果是'00024'。有什麼建議麼?

+0

沒有,'00024'是*不*打印24.打印20,因爲它是一個八進制數。 – 2014-09-11 07:15:16

+0

對不起,我打錯了。 – kangfend 2014-09-11 07:18:20

回答

3

如果你想表示整數帶前導零,format()明確數量的字符串:

format(integer, '05d') 

每當你的輸出值,print隱含其轉換爲與str()的字符串,format()你控制轉換如何明確發生。

當您在交互式解釋器中回顯數字時,將使用repr()代替,但對於整數,輸出與使用str()時完全相同。

演示:

>>> format(24, '05d') 
'00024' 

當你進入00024爲文字整數,Python 2的分析,作爲一個八進制數,在Python 3,這是一個語法錯誤。

如果你想詮釋在Python 2外殼這樣一個數字,如果它是一個字符串,你不能做你想要什麼,而不是前導零的任意數量。充其量,您最多可以將生成的整數重新格式化爲八進制數,再次使用前導零。這會再次產生一個字符串,但你必須硬編碼前導零的數量:

>>> number = 00024 
>>> format(number, '05o') 
'00024' 

注意,這還將只要你有一個數字,前導零失敗;你可以自動檢測這些值,如果它們比4095(07777八進制)更大:

strnumber = format(number, '5d' if number > 0o07777 else '05o') 

任何數量與領先的零和阿拉伯數字8或9只是失敗有語法錯誤:

>>> 09876 
    File "<stdin>", line 1 
    09876 
     ^
SyntaxError: invalid token 

你更好的選擇是剛剛進入這樣的數字爲字符串代替。

+0

我有這個數字00024的數據,我想轉換爲字符串。但不能改變價值。 – kangfend 2014-09-11 07:20:03

+0

啊好的,感謝您的回答@馬亭,PIETERS :) – kangfend 2014-09-11 07:27:12

相關問題