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爆速講座

