Pythonの文字列zfill()メソッドは、文字列の左側に特定の幅に達するまでゼロを埋め込むために使用されます。
これは、手動でforループを使用して反復する代わりに、文字列にパディングを追加する最も “Pythonic “な方法です。
Python String zfill() メソッドのシンタックス
Python の文字列 zfill() 関数は String クラスに属し、文字列オブジェクトにのみ使用できます。
これは幅をパラメータとして受け取り、指定された幅に達するまで文字列の左側(文字列の開始点)にゼロを埋め尽くします。
もし width < len(str) ならば、元の文字列が返されます。
そうでなければ、Pythonの文字列は不変なので、この関数は新しい文字列を返します。
new_str = str.zfill(width)
|
先頭の記号(+/-)がある場合、パディングは記号の後に追加され、新しい文字列でも先頭の記号の位置が維持されます。
それでは、いくつかの例を見てみましょう。
先頭の記号がない場合は,左に0を詰める。
>>> a = "Python"
>>> a.zfill(15)
'00000Python' |
見ての通り、ゼロは左詰めにされ、新しい文字列の長さは15になります。
指定した幅が len(“Python”) よりも小さい場合は、元の文字列を取得します。
>>> a = "Python"
>>> a.zfill(len(a) - 1)
'Python'>>> a.zfill(len(a) - 1) == a
True |
先頭に+/-記号がある場合は、記号の後にゼロがパディングされます。
>>> a = "+123456"
>>> a.zfill(len(a) - 1)
'+123456'>>> a.zfill(10)
'+000123456'>>> a = "-123456"
>>> a.zfill(10)
'-000123456' |
Python String zfill() の代替となるもの
zfill() の他に、文字列のパディングをゼロにするいくつかのメソッドを使うことができます。
str.rjust()の使用法
str.zfill()と同様に、str.rjust()も文字列を詰めることができますが、詰める文字を指定することができます。
以下の例を見てください。
>>> a = "Python"
>>> a.rjust(15, "0")
'00000Python'>>> a.rjust(15, "1")
'11111Python' |
ここでは、rjust(width, '0') を使ってゼロパディング、rjust(width, '1') を使ってワンパディングを導入しています。
数字を任意の文字に置き換えることができます。
印刷文字列の書式を使用する
実数を扱う場合は、Python f-strings (Python 3.6 以降) を使って、ゼロパッドの文字列を返すこともできます。
>>> a = 1.414
>>> print(f'{a:013}')
'000000001.414' |
印刷文字列のフォーマットについては、公式ドキュメントで詳しく説明されています。