今回は、pythonで「format」を用いて、数字や文字の桁数をそろえたり、ゼロ埋めする方法について解説します。
1. formatの基本的な使い方と桁数指定
まずは、「format」の基本的な使い方について解説します。
formatの基本的な使い方は、「“{}”.format(代入するもの)」という形です。
{}の部分に、(代入するもの)が入った状態で出力されます。
簡単な例を挙げると、下のような形です。
dat = "{}".format("testです") print(dat) >>>testです
そして本題はこれからで、「{}」の中身は、「{:フォーマット}」とすることでフォーマットを指定することができます。
これも例を見てみましょう。
dat = "{:*^20}".format("testです") print(dat) >>>*******testです*******
このように、空白を「*」で埋めたりすることもできます。
では、よく使うフォーマットを詰め合わせたものを紹介し、細かく解説します。
下のコードを例に説明していきます。
dat = "{:*^20,.3f}".format(21902.198) print(dat) >>>****21,902.1980*****
上のフォーマットを分解すると、下のようになります。
では、ひとつづつ解説していきます。
1. フォーマット指定開始の「:」
最初に解説した通り、フォーマットを指定するためには、まず「:」を入れる必要があります。
この「:」を書いてからフォーマットを書き始めると覚えておきましょう。
2. 桁数や位置の指定
次の3つのかたまりが、桁数や位置の指定を表します。
2.1 空白を埋める文字
まず最初に、空白を埋める文字を指定できます(指定できるのは1文字のみ)。
3番目で桁数を指定するのですが、入力がその桁数未満の場合に生じる空白を埋める文字を指定します。
ちなみに省略可能で、省略すると空白にはスペース「 」が入ります。
2.2 位置を指定
次に文字の位置を指定します。位置の指定には下の3つを使います。
記号 | 位置 | 使用例 | 表示 |
< | 左詰め | “{:*<5}”.format(3) | 3**** |
^ | 中央 | “{:*^5}”.format(3) | **3** |
> | 右詰め | “{:*>5}”.format(3) | ****3 |
ちなみに位置は、「空白を埋める文字」を指定しなかった場合のみ省略可能で、省略した場合は右詰め「>」と同じになります。
2.3 桁数の指定
最後に桁数を指定することができます。
入力される文字数が、ここで指定した桁数以下の場合は空白ができます。
逆に指定した桁数以上の場合は、指定した桁数で止まらず入力した桁数に合わせられます。(空白はできません)
3. 文字の形式を指定
最後に、文字の形式を指定します。
3.1 千区切りでコンマを挿入
数字の桁が多い場合、千区切りでコンマ「,」が良く挿入されますが、それを記入することができます。
ちなみに省略可能です。
3.2 文字の形式を指定
本題はこちらで、最後に文字の形式を指定することができます。
主に使うものは下の4つになります。
記号 | 意味 | 使用方法 |
s | 文字 | 文字の場合に使用(省略可) |
d | 整数 | 整数の場合に使用(省略可) |
.数字f | 実数(少数点表記) | .3f のように小数点以下の桁数を入力 |
.数字e | 実数(指数表記) | .3e のように小数点以下の桁数を入力 |
ただし、省略することで基本的に入力の形式に合わせて読み込んでくれるため、実際は小数点以下の桁数をそろえたい場合のみ使用することになると思います。
ちなみに、実数で指定した少数以上に桁がある場合は、四捨五入され指定した桁数に揃えられます。
以上で、良く使うformatの基本操作について解説しました。
- formatの基本的な使い方は「“{}”.format(代入するもの)」という形
- 「{:フォーマット}」とすることでフォーマットを指定することができる
2. ゼロ埋めの方法
次に、空白をゼロ埋めする方法について解説していきます。
といっても、上で解説した基本を理解された方はすでに察しはついているかもしれませんね。
では、解説していきます。
ゼロ埋めを行いたい場合は、以下のように記述します。
dat = "{:0>5}".format(2) print(dat) >>>00002
このように、
①「空白を埋める文字をゼロに指定」し、
②「右詰め」で、
③「桁数を指定」することで
ゼロ埋めを行うことができます。
上の「1. formatの基本的な使い方と桁数指定」で基本は全て解説していますので、もし分からなかった場合はそちらをご覧ください。
- ①空白を埋める文字をゼロに指定
- ②右詰めを指定
- ③桁数を指定
3. 文字列との組み合わせ
さて、formatの基本的なことについては解説し終えましたので、次は文字列との組み合わせについて解説したいと思います。
といっても基本は変わらず、内容としては「{}」の前後に文字を打てますよ、というものです。
具体例を見てみましょう。
day = "今日は{:0>2}日です。".format(15) print(day) >>>今日は15日です。
このように、formatで指定する「{}」の前後には文字を入力できますので、上のように表示させることができます。
では、これはどういった時に使うのかというと、例えば1月~12月のフォルダを作りたい、なんて時には、下のようにすることで簡単に作ることができます。
import os for i in range(1,13): mon = "{:0>2}月".format(i) os.makedirs(mon, exist_ok=True)
上のように、簡単に月別のフォルダを作成することができました。
ちなみに、フォルダを名前順に並び替えると、ゼロ埋めしていない場合はきれいに並びませんので、ゼロ埋めして作成することをお勧めします。
また、フォルダの作成部分で疑問があった方は、下の記事で解説していますのでそちらをご覧ください。
- formatで指定する「{}」の前後には文字を入力できる
- フォルダを名前順に並び替える時ゼロ埋めしていないときれいに並ばない
4. 複数のformat指定
最後に、複数のformatを同時に使用する方法について解説します。
「{}」の中でフォーマットを指定する際は、必ず「:」を付けてから始めましょうと解説しましたが、実はその左側はインデックス番号を指定する位置になっています。
これについて、例題を見ながら解説します。
dat = "今日は{0:0>2}月{1:0>2}日です".format(8, 31) print(dat) >>>今日は08月31日です
上のようにすることで、2つのフォーマットを指定できます。
この時の記述方法は、「{インデックス番号:フォーマット}」という形をとります。
インデックス番号とは、.format()の中身をコンマ「,」で分け、前から順番につけた番号です。(ゼロ始まり)
ちなみに、インデックス番号を指定すれば、下のように何度でも使用することができます。
dat = "今日は{0:0>2}月{1:0>2}日で、{1:0>2}日はゴミの日です。".format(8, 31) print(dat) >>>今日は08月31日で、31日はゴミの日です。
このように、インデックス番号を指定すれば、任意の場所に入力することができます。
- {インデックス番号:フォーマット}でインデックス番号を指定
- インデックス番号とは、.format()の中身をコンマ「,」で分け、前から順番につけた番号
- インデックス番号を指定すれば複数回使用できる
5. おわりに
今回は、数字や文字の桁数をそろえたり、ゼロ埋めする方法として「format」の使い方を解説しました。
特に、ゼロ埋めは日付を付ける際にもよく使用するため、覚えておいて損はないと思います。
なお、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作っていますので、気になった方はそちらもご覧いただけると幸いです。
コメント