2013-06-14 9 views
69

str.format関数を使用して先行ゼロを持つ整数値を表示できますか?Pythonはstr.formatを使用して先行ゼロを追加します

例入力:

"{0:some_format_specifying_width_3}".format(1) 
"{0:some_format_specifying_width_3}".format(10) 
"{0:some_format_specifying_width_3}".format(100) 

所望の出力:

"001" 
"010" 
"100" 

Iの両方zfill%ベースのフォーマット(例えば'%03d' % 5)これを達成することができることを知っています。しかし、str.formatを使用して、コードをきれいにして一貫性を保つために(私はdatetime属性で文字列をフォーマットしています)、またFormat Specification Mini-Languageの知識を広げるためのソリューションが欲しいです。

+1

は 'max_width'、' A'、 'B'、 'C​​'と変数名やですあなたの入力は文字列ですか? –

+0

これは単に変数名の例です。この例では、 'max_width'を使用して、いくつの先行ゼロがサンプル値に必要であるかを示しました。私の実際のコードでは、フォーマットへの入力には、datetimeオブジェクトと先行ゼロでフォーマットしたいintが含まれています。 – butch

+0

だから、 'format'や生のpythonだけを使用する関数を使って1行にしたいのですか? –

答えて

152
>>> "{0:0>3}".format(1) 
'001' 
>>> "{0:0>3}".format(10) 
'010' 
>>> "{0:0>3}".format(100) 
'100' 

説明:PythonのドキュメントでFormat examples, Nesting examples由来

{0 : 0 > 3} 
│ │ │ │ 
│ │ │ └─ Width of 3 
│ │ └─ Align Right 
│ └─ Fill with '0' 
└─ Element index 
+0

ああ、私の例はあまりにも文字どおりに解釈されたと思う。私は '' {0:some_format_specifying_width_four} ''を書式化したいだけです。format(10) ''生成 '' 0010 ''。 – butch

+1

元の例を更新してより明瞭にしました – butch

+1

編集しました。 –

19

>>> '{0:0{width}}'.format(5, width=3) 
'005' 
+0

優秀!私は@ F.Jの答を受け入れています。私は幅のために別の変数を指定したくないのですが、この答えはその証言の中で非常に無声だと思われます! – butch

+0

質問が回答された後で編集すると起こります。あなたの意図を明確にするのを助けることができてうれしいです。 – msw

関連する問題