Pythonで桁数を揃えて連番を生成する方法

Pythonを使って桁数を揃えた連番を生成する方法について説明します。これは、ファイル名に連番を追加する場合や、整理整頓されたデータセットを作成する際に非常に便利です。初心者でも簡単に理解できるように、ステップバイステップで解説していきますので、ぜひ最後までご覧ください。

目次

なぜ桁数を揃えた連番が必要なのか

桁数を揃えた連番は、日常的な作業からプログラミングまで幅広い場面で活躍します。
たとえば、ファイル名に連番を付けて保存するときに桁数が揃っていないと、「1, 2, 10, 11…」のように順番が崩れてしまい、見たいファイルを探すのが大変になります。
しかし「001, 002, 010, 011…」のようにゼロ埋めして桁数を揃えれば、一覧表示でも整然と並び、一目で把握できます。
また、データベースやプログラムでIDを扱う際にも、桁数を統一することで処理が安定し、予期せぬ不具合を防げます。見やすさと安全性の両面で効果を発揮するのが「桁数を揃えた連番」なのです。

Pythonで連番を生成する基本的な方法

まずは、Pythonで最も基本的な連番の作り方を確認しましょう。Pythonには range() という便利な関数があり、これを使うと簡単に連続した数値を生成できます。

Python
for i in range(1, 11):
    print(i)

このコードを実行すると、1から10までの数値が順番に出力されます。range(1, 11) と書くことで、「1から始まり10で終わる整数の並び」を作ることができるのです(終了値の11は含まれない点に注意してください)。

range() はPython学習の初期段階でよく登場する関数で、繰り返し処理と相性が良く、シンプルに連番を作るときには欠かせない存在です。

ただし、この方法で生成される数値は単なる整数なので、桁数が揃っていません。
たとえば「1, 2, 3, …, 10」という並びは一見問題なさそうですが、ファイル名やIDとして利用した場合に「1, 10, 2, 3…」と並んでしまい、順番が崩れて見えてしまうことがあります。
そこで次に紹介する「桁数を揃える工夫」が必要になるわけです。

桁数を揃えた連番を生成する

先ほど紹介した range() を使った方法では、単純に「1, 2, 3…」といった数値が生成されるだけで、桁数は揃っていません。
これを「001, 002, 003…」のように整った形式にするには、文字列のフォーマット機能を利用します。Pythonでは代表的に str.zfill() メソッドと format() メソッドの2つの方法があります。

str.zfill()を使う方法

zfill() は、文字列の左側をゼロで埋めて、指定した桁数に揃えてくれるメソッドです。

Python
for i in range(1, 11):
    print(str(i).zfill(3))

このコードは、1から10までの連番を3桁で揃えて出力します。結果は以下の通りです。

Bash
001
002
003
004
005
006
007
008
009
010

数字を文字列に変換してから桁数を揃える点がポイントです。

format()を使う方法

もうひとつの方法が format() を使う書き方です。こちらはフォーマット指定子を利用して桁数をコントロールします。

Python
for i in range(1, 11):
    print("{:03}".format(i))

こちらも同じように、3桁のゼロ埋めで表示されます。

どちらを選ぶ?

  • 短く書きたいzfill() が直感的でわかりやすい
  • 柔軟にフォーマットしたいformat() のほうが拡張性が高い(桁数や数値の整形を自由に変更できる)

Python初心者であれば、まずは zfill() を覚えておけば十分です。慣れてきたら format() や f文字列(f"{i:03}")も使えるようになると便利です。

ファイル名に連番を追加する

次に、ファイル名に桁数を揃えた連番を追加する方法を見てみましょう。以下のコードでは、format()メソッドを使用してファイル名に連番を追加しています。

Python
base_filename = "file"
for i in range(1, 11):
    filename = "{}_{:03}.txt".format(base_filename, i)
    print(filename)

このコードは、file_001.txt から file_010.txt までのファイル名を生成します。結果は以下の通りです。

Bash
file_001.txt
file_002.txt
file_003.txt
file_004.txt
file_005.txt
file_006.txt
file_007.txt
file_008.txt
file_009.txt
file_010.txt

サンプルコードとその実行結果

ここでは、上述の方法を組み合わせて、実際に連番付きのファイル名を生成する完全なサンプルコードを示します。

サンプルコード

Python
def generate_filenames(base_name, count, digits):
    filenames = []
    for i in range(1, count + 1):
        filename = "{}_{:0{width}}.txt".format(base_name, i, width=digits)
        filenames.append(filename)
    return filenames

# 実行例
base_name = "file"
file_count = 10
digit_count = 3
file_list = generate_filenames(base_name, file_count, digit_count)

for file in file_list:
    print(file)

実行結果

上記のコードを実行すると、以下のような連番付きのファイル名が生成されます。

Bash
file_001.txt
file_002.txt
file_003.txt
file_004.txt
file_005.txt
file_006.txt
file_007.txt
file_008.txt
file_009.txt
file_010.txt

まとめ:Pythonを活用し効率的に作業を進められた

この記事では、Pythonで桁数を揃えた連番を生成する方法を紹介しました。実際に使ってみると、ファイル名がきれいに並んだり、データが見やすく整理されたりと、ちょっとした工夫が思った以上に便利だと感じられるはずです。

私自身も最初に試したとき、「バラバラに並んでいたファイルが一瞬で整列した!」という体験に驚きました。小さなテクニックですが、作業の効率や見やすさが大きく変わります。

ぜひみなさんも、自分のプロジェクトで試してみてください。Pythonを活用することで、「あ、こんなに楽になるんだ」という体験がきっと増えていきますよ。

Pythonを活用することで、効率的に作業を進めることができるようになります。
これからも、Pythonの便利な使い方を学び、プログラミングスキルを向上させていきましょう。

この記事を書いた人

目次