sec01 - 文字列のフォーマット(書式指定)
スポンサーリンク

書式の基本

このレクチャーでは、文字列のフォーマット(書式指定)について学習します。

書式指定を行う時の記述は、次のような形式になります。

  • {var:formatting}
  • {:formatting} (formatメソッドの"位置引数"を使う場合)

まず、波カッコの中にコロンを入力します({:})。次に、コロンの左側に変数名(formatメソッドの場合は置換場所を指定する"名前")を入力します(var:)。ただし、formatメソッドの"位置引数"を使う場合は、コロンの左側には何も記述しません。最後に、コロンの右側で書式指定を行います(:formatting)。

書式指定は、formatメソッドとf-stringともに同じ形式で記述します。

桁区切りの書式指定を行っている次のコードは、全て上記のルールで記述されていて有効です。

# 出力結果: "1,234,567,890"
num = 1234567890

# === formatメソッドを使った、書式指定 === #
# 位置引数を使用 (コロンの左側は空白)
formatted_num = '{:,}'.format(num)

# キーワード引数を使用(波カッコ名=変数名)
formatted_num = '{num:,}'.format(num=num)

# キーワード引数を使用(波カッコ名≠変数名)
formatted_num = '{var:,}'.format(var=num)

# === f-stringを使った、書式指定 === #
formatted_num = f'{num:,}'  # f-stringの場合はこの書き方のみ

書式指定や文字列の結合などを組み合わせると次のようなコードになります。

# 出力結果: "Nico has $50,000 in savings."
who = 'Nico'
num = 50000

# === formatメソッドを使った、書式指定 === #
# 位置引数を使用 (コロンの左側は空白、書式指定がない場合は"{}"のみ記述する)
formatted_num = '{} has ${:,} in savings.'.format(who, num)

# キーワード引数を使用(波カッコ名=変数名)
formatted_num = '{who} has ${num:,} in savings.'.format(who=who, num=num)

# キーワード引数を使用(波カッコ名≠変数名)
formatted_num = '{name} has ${money:,} in savings.'.format(name=who, money=num) 

# === f-stringを使った、書式指定 === #
formatted_num = f'{who} has ${num:,} in savings.'  # f-stringの場合はこの書き方のみ

ゼロ埋め/ ゼロパディング (0n)

数値の前にゼロを埋めて表示の桁数を揃える書式です。

ID番号("00425")や時間("09:05")、ファイル名のリビジョン("売上_rev001.xlsm")などのフォーマットでよく使用します。

書式指定は、0nの形で指定します。最初の0(ゼロ)の後に桁数を指定します。3桁にしたい場合は03、15桁にしたい場合は015と記述します。

num = 6
formatted_num = '{:03}'.format(num)  # 3桁のゼロ埋め ("006")
formatted_num = f'{num:015}'  # 15桁のゼロ埋め ("000000000000006")
スポンサーリンク

桁区切り (,)

桁区切りはこれまで何度も登場していますが、整数部分に対して、3桁ごとにカンマ(,)を挿入する書式です。

書式指定は、コロン(:)の後に,を記述します。

num = 1234567890
formatted_num = '{:,}'.format(num)  # 桁区切り("1,234,567,890")
formatted_num = f'{num:,}'  # f-stringの場合("1,234,567,890")

小数点以下の桁数 (.nf)

小数点以下の桁数を書式指定で揃えることができます。

書式指定は、.nfの形で指定します。最初の.(ドット)の後に小数点以下の桁数を指定します。そして、最後にfを記述します。小数点以下を2桁にしたい場合は.2f、15桁にしたい場合は.15fと記述します。

元の数値の小数点以下の桁数が、書式指定で指定した桁数より小さい場合は0が埋められます。

num = 3.1415
formatted_num = '{:.2f}'.format(num)  # 小数点以下2桁まで表示 ("3.14")
formatted_num = f'{num:.15f}'  # 小数点以下15桁まで表示("3.141500000000000")

パーセント表記 (%)

割合を百分率(%)として表示したいときに使います。表示される数値は自動的に100倍され、末尾に"%"がつきます。

書式指定は、コロン(:)の後に%を記述します。

パーセント表記のデフォルトの挙動は、小数点以下の桁数が大きい場合でも、小数点以下第6位までしか表示されません。また、元の数値の小数点以下の桁数が小数点以下第6位に満たない場合は、0が埋められます。

num = 0.14159
formatted_num = '{:%}'.format(num)  # 小数点以下第6位までゼロが埋められる ("14.159000%")

num = 0.14159265358979323846
formatted_num = f'{num:%}'  # 小数点以下第6位まで ("14.159265%")

パーセント表記は、小数点以下の桁数指定と組み合わせることで、桁数を自由に変えることができます。

%の前に.0を挿入すると小数点以下の桁数が0桁に、.2を挿入すると小数点以下の桁数が2桁になります。(※パーセント表記で小数点以下の桁数を指定する場合は.n%のように記述します。『小数点以下の桁数 (.nf)』で学んだ時のfは記述不要です。)

num = 0.14159265358979323846
formatted_num = '{:.0%}'.format(num)  # パーセント表記 ("14%")
formatted_num = f'{num:.2%}'  # パーセント表記 ("14.16%")

書式指定の組み合わせ

書式指定は、組み合わせて使うことができます。

整数部分のカンマ区切りと小数点以下の桁数の指定を組み合わせる場合、,.2fのように記述します。(,.2fを繋げて記述します。)

num = 1234567.891234
formatted_num = f'{num:,.2f}'  # カンマ区切りと小数点以下2桁 ("1,234,567.89")

スポンサーリンク