Python♪「% 演算子」の書式設定において、桁数を「*」で表記する方法

%演算子による古い文字列書式設定において、桁数の部分を「*」で表現し、桁数を引数で渡す方法があります。この方法は、localeモジュールのlocale.format()やlocale.forma_string()でも同様ですので、サンプルコードにより使い方を簡単に整理します。

なお、「% 演算子」を使った基本的な文字列の書式設定方法については、以下の記事で説明していますので、参考にしてください。

参考記事:「% 演算子」を使った古い文字列書式設定

0.チュートリアル学習のポイントシリーズ

この記事は「チュートリアル学習のポイントシリーズ」の記事です。一連の記事のリンクは、以下を参照してください。
Pythonチュートリアルの学習のポイントを整理

1.「*」により桁数を指定する3つのサンプルコード

コード01はフォーマット指定子%fにより、全体桁数を10、小数点部分の桁数を5に指定したものです。2~5行目の出力は全て同じです。

3行目は%演算子の右側に引数が3つありますが、「%*.*f」では、まず1つ目の*に10、次に2つ目の*に5、最後に3.14が%10.5fに渡されます。

「*」の部分は、1か所でもよく、4行目、5行目のように記述することもできます。

#コード01
print('%f10.5' % 3.14)
print('%*.*f' % (10, 5, 3.14))
print('%*.5f' % (10, 3.14))
print('%10.*f' % (5, 3.14))
#出力01
   3.14000
   3.14000
   3.14000
   3.14000

2.少しだけ複雑にしたサンプルコード

コード02は コードを少しだけ複雑にしてみました。 フォーマット演算子が2つある例です。コード02の2行目と3行目は同じ出力結果になります。

#コード02
print('%sは%10.5fです。%10fではない。' % ('円周率', 3.14, 5.14))
print('%sは%*.*fです。%*fではない。' % ('円周率', 10, 5, 3.14, 10, 5.14))
#出力02
円周率は   3.14000です。  5.140000ではない。
円周率は   3.14000です。  5.140000ではない。

3.localeモジュールの書式設定

localeモジュールのlocale.format()やlocale.forma_string()の書式設定は、%演算子による文字列書式設定に似ているので、%演算子を知っていれば、理解しやすいのではないかと思います。

5行目の「%*d」は「%15d」ですので整数の表示桁数を15に指定します。また、6行目の「%.*f」は「%.2f」ですので、浮動小数点数の少数部分の桁数を2に指定します。

#コード03
import locale
locale.setlocale(locale.LC_ALL, 'English_United States.1252')
x = 1234567.8
print(locale.format("%*d", (15, x), grouping = True))
print(locale.format_string("%s%.*f", ('$', 2, x), grouping = True))
#出力03
      1,234,567
$1,234,567.80

4.広告

「ホームページよかったよ!」っていうあなた。以下の広告から、なにか買い物をしてください。一部が私の報酬になり、モチベーションが大幅upします。