%演算子による古い文字列書式設定において、桁数の部分を「*」で表現し、桁数を引数で渡す方法があります。この方法は、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します。