2016-09-27 5 views
2

、私はそうのように行うことができ、先行ゼロを持つ固定長文字列であるように番号をフォーマットしようとしている:フォーマット負の固定長文字列

'{:0>10}'.format('10.0040') 
'00010.0040' 

私は負の数を持っています

'-0010.0040' 
:私はあることを、文字列の書式を設定したい場合は

'{:0>10}'.format('-10.0040') 
'00-10.0040' 

:と否定を表現したい、私はこれになるだろう

どうすればいいですか?

私はif/thenを行うことができましたが、フォーマットがこれをすでに処理するかどうか疑問に思っています。

+0

Huh。うざい。 – wim

+0

実際には、文字列*を先行ゼロの固定長になるようにフォーマットしようとしています。 –

答えて

5

あなたは問題だが、あなたの「数」は、文字列として表現されていることなので、Pythonはかどうかを知る方法はありませんそれはそれが数であることを知らないので、肯定的または否定的です。

>>> '{: 010.4f}'.format(10.0400) 
' 0010.0400' 
>>> '{: 010.4f}'.format(-10.0400) 
'-0010.0400' 

これは、0で満たされ、固定精度を持っています。正の数値の場合はspace、負の場合は-が使用されます。

あなたは(正の兆候がすなわち+を、またはちょうど余分0で記入)動作を変更することができ、フォーマットトークン

4

私はstr.formatでそれを行う方法がわかりません。代わりにstr.zfillを使用して提案してもよろしいですか?

>>> '-10.0040'.zfill(10) 
'-0010.0040' 
>>> '10.0040'.zfill(10) 
'00010.0040' 

あなたはフォーマットする前に、数に変換耐えることができる場合:

>>> from decimal import Decimal 
>>> '{:010.4f}'.format(Decimal('10.0040')) 
'00010.0040' 
>>> '{:010.4f}'.format(Decimal('-10.0040')) 
'-0010.0040' 
2

sign部分を使用して、あなたがfloat型に文字列を変換することができた場合は、これを行うことができます:

>>> '{:0=10.4f}'.format(float('-10.0040')) 
'-0010.0040' 
>>> '{:0=10.4f}'.format(float('10.0040')) 
'00010.0040' 
関連する問題