web-dev-qa-db-ja.com

Pythonで数字を可変桁数でフォーマットするにはどうすればよいですか?

たとえば、数字の123を前面にさまざまな数のゼロを埋めて表示したいとします。

たとえば、5桁で表示したい場合は、桁= 5で次のようになります。

00123

6桁で表示したい場合、数字= 6で次のようになります。

000123

Pythonでこれを行うにはどうすればよいですか?

57
Eddy

Zfillと呼ばれる文字列メソッドがあります。

>>> '12344'.zfill(10)
0000012344

文字列の長さN(この場合は10)になるように、文字列の左側にゼロを埋め込みます。

36
Donald Miner

古いスタイルの_''%_フォーマットよりも優先されるformat()メソッドでフォーマットされた文字列で使用している場合

_>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'
_

見る
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings

これは可変幅の例です

_>>> '{num:0{width}}'.format(num=123, width=6)
'000123'
_

Fill charを変数として指定することもできます

_>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'
_
157
John La Rooy
'%0*d' % (5, 123)

フォーマットされた文字列リテラルの導入 (略して「f-strings」)Python 3.6)で、以前定義された変数に簡単な構文でアクセスできるようになりました。

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

ジョン・ラ・ルーイによって与えられた例は、

In [1]: num=123
   ...: fill='0'
   ...: width=6
   ...: f'{num:{fill}{width}}'

Out[1]: '000123'
6
joelostblom
print "%03d" % (43)

プリント

043

5
st0le

文字列フォーマットを使用する

print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123

詳細はこちら: リンクテキスト

1
Blue Peppers