Pythonで数値をゼロ埋め(ゼロパディング)する:zfillメソッドとf文字列の使い分け

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幅}": データが「数値」である場合、こちらが最も効率的で読みやすい方法です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次