Python3でf-stringsを使用して文字列を作成する方法
序章
Python文字列は、文字と記号の可変長シーケンスです。 文字列を使用すると、プログラムでテキストを操作および追跡したり、そのテキストをユーザーに表示したりできます。
Pythonには、文字列を作成するためのいくつかのメソッドが含まれています。 %
-フォーマットスタイルと str.format()
方法。 The str.format()
メソッドはより新しいです %
-フォーマットスタイル。詳細については、 Python3で文字列フォーマッターを使用する方法を参照してください。 f-文字列フォーマットはPythonの文字列フォーマットの最新の方法であり、文字列内で式を使用するなどの便利な機能を提供します。 %
-フォーマットスタイルまたは str.format()
方法。
このチュートリアルでは、Python3のf文字列を使用して文字列を動的に作成する方法を学習します。
前提条件
このチュートリアルを最大限に活用するには、Python3でのプログラミングにある程度精通していることをお勧めします。 必要な背景情報については、次のチュートリアルを確認できます。
f文字列での変数の使用
プログラムは通常、変数を文字列に置き換える必要があります。 Pythonのf文字列は、これを行うための便利な方法を提供します。 例を考えてみましょう:
ocean_description = "deep blue"
print(f"The ocean is {ocean_description} today")
このコードを実行すると、次のような出力が返されます。
OutputThe ocean is deep blue today
まず、文字列をバインドします deep blue
名前の付いた変数に ocean_description
. 次の行では、文字列の前に文字列を追加して、f文字列のフォーマットをアクティブにします。 f
. f文字列は内部の式を解釈します {}
Pythonとしての文字。 だから、言うことによって {ocean_description}
、Pythonに値を挿入するように指示しています ocean_description
文字列への変数。 結果の文字列が出力されます。 The ocean is deep blue today
.
f文字列での任意の式の使用
前のセクションでは、変数をf文字列に置き換える方法を学びました。 f文字列を使用すると、任意のPython式を置き換えることもできます。
print(f"1 + 1 = {1 + 1}")
このコードを実行すると、次のような出力が返されます。
Output1 + 1 = 2
この例では、f-stringフォーマットを再度アクティブにします。 f
文字列のプレフィックス。 の内部 {}
文字、有効なPython式を含めます 1 + 1
. その式の最終結果は次のとおりです。 2
、これは印刷される最終的な文字列に含まれます。
ほぼすべての有効なPython式をf文字列で使用できます。 次の例では、f文字列内のディクショナリ値にアクセスする方法を示します。
ocean_dict = {"shark": "fish"}
print(f"A shark is a kind of {ocean_dict['shark']}")
次のような出力を受け取ります。
OutputA shark is a kind of fish
最初の行で、単一のキーと値のペアを使用して辞書を定義します。 shark
値にマップされます fish
. 次の行に、式を埋め込みます ocean_dict['shark']
の中に {}
f文字列の文字。 その埋め込まれた式の結果は次のとおりです。 fish
、これは出力に含まれます。
含んでいる repr
オブジェクトの
デフォルトでは、f-stringsは、含まれているPythonオブジェクトを文字列に強制して、オブジェクトを最終的な文字列の一部にすることができます。 デフォルトでは、Pythonはオブジェクトに定義された __ str__メソッドを使用して、オブジェクトを文字列に強制します。 組み込みのPythonオブジェクト(例:リスト、辞書、整数、浮動小数点数)には、事前定義されたものが含まれます __str__
強制プロセスがシームレスに行われるようにする方法。
生成された文字列でオブジェクトの代替表現を使用すると便利な場合があります。 f-stringsには、Pythonオブジェクトのreprを最終出力に含めることを可能にするディレクティブが含まれています。 The repr
Pythonオブジェクトのは、指定されたPythonオブジェクトのデバッグ記述です。
を区別するための例を考えてみましょう __str__
と repr
より明確に。 電話するには repr
追加する変数に !r
式の最後まで:
from datetime import datetime
now = datetime.now()
print(f"{now}")
print(f"{now!r}")
このコードを実行すると、次のような出力が返されます。
Output2020-08-22 18:23:22.233108
datetime.datetime(2020, 8, 22, 18, 23, 22, 233108)
注:通常、出力には、コンピューターの現在の時刻に関連するテキストが含まれます。 コンピューターの時間は、サンプル出力に表示されている時間とは異なります。
この例では、 datetime module を使用して、現在の時刻を表すオブジェクトを取得し、それを次の名前の変数にバインドします。 now
. 次に、印刷します now
2つの異なるf文字列を2回使用します。 最初のf文字列には追加の修飾子が含まれていないため、Pythonは __str__
現在の時刻の表現。
2番目の例では、 !r
f文字列に埋め込まれた式の末尾の修飾子。 !r
Pythonにreprを呼び出すように指示します now
文字列表現を生成します。 一般に、 repr
インタラクティブなPythonインタープリターにより適したデバッグ情報を出力します。 この場合、私たちは詳細を受け取ります datetime
にバインドされたオブジェクト now
.
フォーマット仕様の使用
f-stringsは、出力された文字列をさらに制御するためのフォーマット仕様修飾子を提供します。 これらのフォーマット仕様修飾子には、接頭辞として :
、 例えば:
{expression:format_spec}
パーセンテージ修飾子は、使用可能な修飾子の1つの例です。
decimal_value = 18.12 / 100.0
print(f"{decimal_value:.1%}")
このコードを実行すると、次のような出力が返されます。
Output18.1%
まず、バインドします decimal_value
に 0.1812
(結果として 18.12 / 100.0
). 次に、f文字列を使用して印刷します decimal_value
パーセンテージとして。 The :
フォーマット仕様セクションを開始します。 The .1
小数点以下1桁の精度で数値を出力したいことを示します。 The %
使用したいフォーマット仕様のタイプです。 The %
フォーマット仕様は、数値に100を掛け、 %
出力のシンボル。 したがって、最終的な出力は 18.12%
(0.1812 * 100
小数点第1位を四捨五入し、 %
シンボル)。
フォーマット仕様では、パーセンテージを印刷する以上のことができます。 それらはそれ自体が複雑なミニチュア言語です。 たとえば、式の前後にパディング文字を含めたり、科学的記数法で数値を印刷したりできます。
Pythonドキュメントのこのセクションを使用して、Pythonで利用可能なフォーマット仕様の詳細を確認できます。
特殊文字の取り扱い
これまで見てきたように、 {}
文字はf文字列で特別な意味を持ちます。 リテラルを印刷したい場合 {
また }
キャラクター、追加してエスケープする必要があります {
また }
文字。 次の例を考えてみましょう。
print(f"{{}}")
このコードを実行すると、次のような出力が返されます。
Output{}
リテラルを印刷するには {}
、両方を2倍にする必要がありました {
そしてその }
これらの文字は通常特別な意味を持っているからです。
結論
f-stringsは、Pythonで動的かつ簡潔に文字列を作成するための強力で便利な方法です。 このチュートリアルでは、変数と式をf文字列に代入する方法、型変換指定子を使用する方法、および特殊文字をf文字列でエスケープする方法を学習しました。
The string
モジュールは、このチュートリアルでは取り上げなかった追加のクラスとユーティリティを公開します。 ベースラインができたので、文字列モジュールのドキュメントを使用して、他の利用可能なクラスとユーティリティについて詳しく知ることができます。
また、Pythonの詳細については、PythonコンテンツページまたはPython3シリーズのコーディング方法をご覧ください。