文字列のゼロパディング(ゼロ埋め)

なんらかのIDやコードを採番する際、桁数を合わせるため整数の文字列に対してゼロパディング(ゼロ埋め)をしたい場合があるのではないでしょうか?pythonには色々な方法が用意されています。

ゼロパディング

printf形式

まずは以前ご紹介した文字列のフォーマットを応用してゼロ埋めする方法をご紹介します。printf形式ですが、変換フラグ文字というものを持っています。(ここでは変換フラグ文字について全て説明しませんので、興味がある方は公式ドキュメントを参照してください。)

整数値に対して0という変換フラグ文字を使用すると、ゼロパッディングをしてくれます。例えば、なんらかのIDに「item_4桁整数」を採番したい場合、以下のように記述します。

id_text = "item_%(number)04d"
item_id = id_text % {"number" : 3}
print(item_id) # item_0003

ただし、これは変数が数値型でなければならない点に注意してください。

文字列型のメソッド zfill

pythonの文字列には様々なメソッドが予め用意されていますが、zfillというメソッドを利用すると0埋めをしてくれます。引数で指定した長さで'0'で左詰めした文字列を返します。元のオブジェクトは変更されません。

print("5".zfill(4)) # 0005

これはわかりやすいですね。数値でもprintf形式を使いたくない場合はstrメソッドで文字列に変換すればzfillを使用することができます。

0以外でパッディングする、右寄せ左寄せ中央寄せをする

さらに、0以外でパッディングする場合、右寄せ、左寄せ、中央寄せでそれぞれrjust、ljust、centerという文字列型のメソッドが用意されています。こちらも元のオブジェクトは変更されません。

文字列型のメソッド rjust、ljust、center

text = "hoge"
print(text.rjust(8, "*"))  # ****hoge
print(text.ljust(8, "*"))  # hoge****
print(text.center(8, "*")) # **hoge**

これもわかりやすいですね。

色々ありますが、用途に応じて使い分けてみてください。