如何00024爲 '00024' 轉換與Python?如何將八進制轉換爲字符串而不更改該值?
如果我在Python shell中運行00024,其打印20結果。我想將00024轉換爲字符串,結果是'00024'。有什麼建議麼?
如何00024爲 '00024' 轉換與Python?如何將八進制轉換爲字符串而不更改該值?
如果我在Python shell中運行00024,其打印20結果。我想將00024轉換爲字符串,結果是'00024'。有什麼建議麼?
如果你想表示整數帶前導零,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
你更好的選擇是剛剛進入這樣的數字爲字符串代替。
沒有,'00024'是*不*打印24.打印20,因爲它是一個八進制數。 – 2014-09-11 07:15:16
對不起,我打錯了。 – kangfend 2014-09-11 07:18:20