ID番号や日付、ファイル名(image_001.jpgなど)を扱う際、桁数を揃えるために足りない部分を「0」で埋めたい場合があります。これを「ゼロ埋め」や「ゼロパディング」と呼びます。
Pythonでは、文字列型のメソッド zfill() を使う方法と、f-string(フォーマット済み文字列) を使う方法の2つが一般的です。
この記事では、それぞれの使い方と適切な使い分けについて解説します。
1. 文字列メソッド zfill() を使う
zfill() は、文字列(str型)に対して使用できるメソッドです。指定した長さ(幅)になるように、左側を0で埋めます。
構文:
文字列.zfill(全体の長さ)
このメソッドを使用するには、対象が文字列である必要があります。数値の場合は、あらかじめ str() で変換してから使用します。
具体的な使用例
ユーザーIDを4桁に揃える例です。
# 元のデータ(数値)
user_id_num = 92
# 1. 文字列に変換
user_id_str = str(user_id_num)
# 2. zfillで4桁にゼロ埋め
formatted_id = user_id_str.zfill(4)
print(f"元の値: {user_id_str}")
print(f"ゼロ埋め後: {formatted_id}")
実行結果:
元の値: 92
ゼロ埋め後: 0092
すでに文字列としてデータを持っている場合(例:CSVからの読み込みなど)は、zfill() が最も手軽です。
符号の扱い
zfill() は符号(プラスやマイナス)を認識し、適切に処理します。「0」は符号の後ろに挿入されます。
print("-42".zfill(5))
実行結果:
-0042
(- も含めて5文字になります)
2. f-string(書式指定)を使う(推奨)
Python 3.6以降では、f-string の書式指定を使用する方法が推奨されます。この方法のメリットは、数値を文字列に変換する手間がいらないことです。
構文:
f"{数値:0桁数}"
:05 のように記述すると、「0で埋めて5桁にする」という意味になります。
具体的な使用例
日付データのフォーマットを行う例です。
year = 2025
month = 4
day = 1
# 月と日を2桁でゼロ埋めする (:02)
# int型のまま直接埋め込める
date_str = f"{year}-{month:02}-{day:02}"
print(date_str)
実行結果:
2025-04-01
コードが非常に簡潔になるため、数値変数を扱う場合はこちらの方法がベストプラクティスです。
変数を使って桁数を指定する
桁数自体を変数で指定したい場合は、中括弧を入れ子にします。
number = 7
width = 3
# width桁でゼロ埋め
print(f"{number:0{width}}")
実行結果:
007
まとめ
文字列.zfill(幅): すでにデータが「文字列」である場合や、古いバージョンのPythonコードで使用します。f"{数値:0幅}": データが「数値」である場合、こちらが最も効率的で読みやすい方法です。
