Pythonで文字列・数値をゼロ埋め(ゼロパディング)する方法まとめ

 

プログラミングでファイル名の連番生成や時刻表示、データの整列などを行う際に必要になるのがゼロ埋め(ゼロパディング)です。Pythonでは複数の方法で文字列や数値をゼロ埋めすることができます。この記事では、それぞれの方法を具体例とともに詳しく解説します。

f文字列を使ったゼロ埋め(推奨)

Python 3.6以降で使用可能なf文字列は、最もシンプルで読みやすいゼロ埋めの方法です。

数値のゼロ埋め

num = 42
print(f"{num:05d}")  # 00042
print(f"{num:08d}")  # 00000042

# 負の数の場合
negative_num = -7
print(f"{negative_num:05d}")  # -0007

浮動小数点数のゼロ埋め

decimal_num = 3.14
print(f"{decimal_num:08.2f}")  # 00003.14
print(f"{decimal_num:010.3f}") # 000003.140

文字列のゼロ埋め

text = "ABC"
print(f"{text:0>8}")  # 00000ABC
print(f"{text:0>5}")  # 00ABC

format()メソッドを使ったゼロ埋め

format()メソッドでも同様のゼロ埋めが可能です。

num = 123
print("{:06d}".format(num))  # 000123
print("{:08d}".format(num))  # 00000123

# 文字列のゼロ埋め
text = "Hello"
print("{:0>10}".format(text))  # 00000Hello

zfill()メソッドを使ったゼロ埋め

文字列に対してzfill()メソッドを使用すると、左側にゼロを埋めることができます。

数値文字列のゼロ埋め

num_str = "123"
print(num_str.zfill(6))  # 000123
print(num_str.zfill(8))  # 00000123

# 数値を文字列に変換してからゼロ埋め
num = 42
print(str(num).zfill(5))  # 00042

負の数に対するzfill()

negative = "-7"
print(negative.zfill(5))  # -0007 (符号は保持される)

文字列に対するzfill()

text = "ABC"
print(text.zfill(8))  # 00000ABC
print(text.zfill(3))  # ABC (元の長さ以下の場合は変更されない)

str.rjust()メソッドを使ったゼロ埋め

rjust()メソッドの第2引数に’0’を指定することでゼロ埋めができます。

num_str = "123"
print(num_str.rjust(6, '0'))  # 000123

text = "Hello"
print(text.rjust(10, '0'))  # 00000Hello

実用的な応用例

ファイル名の連番生成

# 画像ファイルの連番
for i in range(1, 11):
    filename = f"image_{i:04d}.jpg"
    print(filename)
# image_0001.jpg
# image_0002.jpg
# ...
# image_0010.jpg

時刻表示のゼロ埋め

import datetime

now = datetime.datetime.now()
hour = now.hour
minute = now.minute
second = now.second

# 2桁のゼロ埋めで時刻表示
time_str = f"{hour:02d}:{minute:02d}:{second:02d}"
print(time_str)  # 例: 09:05:03

学籍番号や社員番号の生成

student_id_base = 2025
for i in range(1, 6):
    student_id = f"{student_id_base}{i:04d}"
    print(f"学籍番号: {student_id}")
# 学籍番号: 20250001
# 学籍番号: 20250002
# 学籍番号: 20250003
# 学籍番号: 20250004
# 学籍番号: 20250005

CSVファイルの出力でデータ整列

products = [
    {"id": 1, "name": "商品A", "price": 1500},
    {"id": 42, "name": "商品B", "price": 250},
    {"id": 123, "name": "商品C", "price": 8900},
]

print("ID   | 商品名  | 価格")
print("-" * 20)
for product in products:
    print(f"{product['id']:04d} | {product['name']:6s} | {product['price']:5d}")
# ID   | 商品名  | 価格
# --------------------
# 0001 | 商品A    |  1500
# 0042 | 商品B    |   250
# 0123 | 商品C    |  8900

16進数のゼロ埋め

num = 255
print(f"16進数: {num:04x}")  # 16進数: 00ff
print(f"16進数: {num:04X}")  # 16進数: 00FF

# リストの16進数表示
numbers = [10, 255, 4095]
for num in numbers:
    print(f"0x{num:04X}")
# 0x000A
# 0x00FF
# 0x0FFF

各方法の特徴と使い分け

f文字列(推奨)

  • 利点: 最も読みやすく、高速
  • 用途: Python 3.6以降での一般的な用途

format()メソッド

  • 利点: 動的な書式指定が可能
  • 用途: 書式が実行時に決まる場合

zfill()メソッド

  • 利点: 文字列専用で直感的
  • 用途: 文字列のゼロ埋めに特化

rjust()メソッド

  • 利点: 任意の文字でパディング可能
  • 用途: ゼロ以外の文字でもパディングしたい場合

まとめ

Pythonでのゼロ埋めは、f文字列、format()メソッド、zfill()メソッド、rjust()メソッドなど複数の方法があります。現在はf文字列を使用することが推奨されていますが、用途や環境に応じて適切な方法を選択することが重要です。

ファイル処理、データ表示、時刻フォーマットなど、様々な場面でゼロ埋めは活用されるため、これらの方法をマスターしておくと、より効率的なプログラミングが可能になります。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座