Pythonにおける文字列のフォーマット方法には、printf形式として知られる方法があります。この方法は、printf関数で一般的に使用される書式指定子をPythonの文字列に適用するものです。この記事では、Pythonのprintf形式の基本を紹介し、さまざまな応用例を示します。
print内の書式の変更やファイル出力時のフォーマット指定(fmt=**)の際に用いられており、この形式はCを踏襲しているようです。
基本的な使い方
Pythonのprintf形式では、文字列内に%
記号を使用して書式指定子を指定します。代表的な書式指定子には以下のものがあります。
%d
: 整数を10進数で表示します。%f
: 浮動小数点数を10進数で表示します。%s
: 文字列を表示します。
以下のルール(原文日本語訳まま整形)に従い、以下の出てくる順に指定することで書式が指定されていきます。
- 指定子の開始を示す文字 ‘%’
- マップキー (オプション)丸括弧で囲った文字列からなります (例えば (somename)) 。
- 変換フラグ (オプション)一部の変換型の結果に影響します。
- 最小のフィールド幅 (オプション)‘*’ (アスタリスク) を指定した場合、実際の文字列幅が valuesタプルの次の要素から読み出されます。タプルには最小フィールド幅やオプションの精度指定の後に変換したいオブジェクトがくるようにします。
- 精度 (オプション)‘.’ (ドット) とその後に続く精度で与えられます。’*’ (アスタリスク) を指定した場合、精度の桁数はvaluesタプルの次の要素から読み出されます。タプルには精度指定の後に変換したい値がくるようにします。
- 精度長変換子 (オプション)
- 変換型
具体例
私はこれを読んで、唯一分かったのは最初に%が必要っていうことぐらい。一緒に例があったのでそれをヒントに実践しつつ解読していきます。
name = "Alice"
age = 30
height = 175.5
# 整数の表示
print("名前: %s, 年齢: %d 歳, 身長: %d cm" % (name, age, height))
# 浮動小数点数の表示
print("名前: %s, 年齢: %d 歳, 身長: %.2f cm" % (name, age, height))
# 文字列の表示
print("名前: %s" % name)
- 1つ目は%を付けることでそこに何か変数(定数)を入力できる。なお、その変数は後ろに%を付けて呼び出す。
- 2つ目は変数が複数あるような場合、呼び出すモノの名前を()で書けば指定できる。
%がついたlangとnumの2つあります。そのうちの一つに注目するとlangって名札がついたモノを後ろに置いておくからそれを挿入してね。ちなみにlangの名札がついている文字はPythonという文字という感じです。
書式設定
Pythonのprintf形式では、他にも多くの書式指定子が利用できます。これには、小数点以下の桁数を指定するための%.2f(小数点以下2桁まで表示)や、特定の幅で表示するための%10d(10桁の幅で表示)などがあります。これらの指定子を組み合わせることで、さまざまな出力形式を作成することができます。
変換フラグ | 何に変換されるか |
---|---|
%d, %i | 符号つき 10 進整数 |
%o | 符号つき 8 進整数 |
%x, %X | 符号つき 16 進整数(大文字・小文字は区別されて表記される) |
%e, %E | 指数表記の浮動小数点数 |
%r | 文字列(Pythonオブジェクトをrepr()で変換) |
%s | 文字列(Pythonオブジェクトをstr()で変換) |
まとめ
Pythonのprintf形式は、文字列のフォーマットに非常に便利な方法です。書式指定子を適切に使用することで、さまざまなデータ型を美しく整形して出力することができます。この記事を参考に、Pythonのprintf形式を活用して効果的な文字列フォーマットを行い、コードをより読みやすく、メンテナンスしやすくしましょう。
コメント