2011-09-13 12 views
6

小数点のある数値に先行ゼロを書式設定する必要があります。先行ゼロの小数点を含む数値の書式設定

この

>>> '3.3'.zfill(5) 
003.3 

は、すべての数字とさえ小数点を考慮します。 Pythonには全体の部分だけを考慮する関数がありますか?

小数点以下5桁以下の単純な数値の書式設定が必要です。また、%5fを使用すると、先行ゼロの代わりに末尾を考慮すると思われます。

+0

'%5.1f'はまだ試しましたか?もしそうなら、何が間違っていますか? –

+1

文字列をスペースで埋め、小数点とそれ以降のすべてを考慮します。 – 3eee3

答えて

2

文字列を使用して起動すると、あなたがやりたいように、このような小さな関数を書くことができます:

def zpad(val, n): 
    bits = val.split('.') 
    return "%s.%s" % (bits[0].zfill(n), bits[1]) 

>>> zpad('3.3', 5) 
'00003.3' 
+1

それはまさに私がしたくなかったことです。しかし、組み込み関数がなければ、それはうまくいくと思います。ありがとう。 – 3eee3

+0

@ 3ee3「3」でこれを試してください。 'int'と' float'で動作するバージョンを望むなら、 'return'の前に' bits [0] = bits [0] .zfill(n) '行を追加し、' return 'to 'return bits ='。 '。join(bits)'。 ' – agf

20

これはあなたが探しているものですか?

>>> "%07.1f" % 2.11 
'00002.1' 

だからあなたのコメントによると、私はこの1つ(のようにエレガントではないが、もはや)を思い付くことができます。このよう

>>> fmt = lambda x : "%04d" % x + str(x%1)[1:] 
>>> fmt(3.1) 
0003.1 
>>> fmt(3.158) 
0003.158 
+1

私は自分のコードの端数を考慮したくありません。 – 3eee3

+0

ああ、今私は理解している。私はそれを説明するコードを編集しました。 – rumpel

3

?あなたの例がそうであるよう

>>> '%#05.1f' % 3.3 
'003.3' 
+0

それでも小数点部分を考慮し、小数点以下第1位の後には何も切り捨てます。 – 3eee3

+0

小数点以下の桁数を考慮して小数点の桁指定子に追加します。 – Santa

5

は、私は、フォーマットの新しいスタイルが好き。 {:06.2f 1}で

loop = 2 
pause = 2 
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause) 
>>>Begin Loop 2, 0002.1 Seconds Pause 

  • 1変数休止のプレースホルダーは、
  • 0先行ゼロでパッドに小数を含む文字の
  • 6総数を示していますポイント
  • 2精度
  • fは整数を浮動小数点に変換します
+0

完璧に動作します! Python 3の小さな変更。 – Royi

関連する問題