「Pythonで文字列中に変数を代入したい」
「フォーマット済み文字列リテラルとは?f-stringsとは?」
このような場合には、この記事の内容が参考となります。
この記事では、f-stringsの使い方と注意点について解説しています。
本記事の内容
- f-strings(f文字列)の使い方
- f-stringsの注意点
それでは、上記に沿って解説していきます。
f-strings(f文字列)の使い方
f-stringsとは、フォーマット済み文字列リテラルのことです。
以下の文字列は、f-stringsになります。
「f’先頭にfが付いている文字列を見たことありませんか?’」
先頭に「f」や「F」を付けることでf-stringsとなります。
では、そもそもフォーマット済み文字リテラルとは何なのでしょうか?
フォーマット済み文字リテラルとは、特殊な文字列のことを言います。
その特殊な文字列の中では、Pythonが機能することが可能です。
「{expression}」と書けば、その中でPythonが機能します。
具体的に見てみましょう。
まずは、タダの文字列の場合です。
hensu = '文字列' mojiretu = 'これは{hensu}です' print(mojiretu)
実行結果は、以下。
これは{hensu}です
普通は、こうなりますよね。
次は、「f」を先頭に付けてf-stringsにします。
hensu = '文字列' mojiretu = f'これは{hensu}です' print(mojiretu)
実行結果は、以下。
これは文字列です
「{expression}」の中では、変数hensuが展開されています。
expressionには、次のモノを設定できます。
- 変数
- 式
- 関数
式と関数を紹介しておきます。
式
式を設定する場合は、次のようにコーディングします。
mojiretu1 = f'式の結果は、{1+5}' print(mojiretu1) a = 10 b = 20 mojiretu2 = f'式の結果は、{a+b}' print(mojiretu2)
実行した結果は、以下。
式の結果は、6 式の結果は、30
関数
関数を設定する場合は、次のようにコーディングします。
def get_result(a, b): result = a + b return result mojiretu = f'関数の実行結果は{get_result(1, 10)}です' print(mojiretu)
実行した結果は、以下。
関数の実行結果は11です
いろいろと設定できますが、個人的には変数以外は使わないと思います。
式や関数は、直前で変数に格納しておけばいいわけですからね。
あくまで、変数を設定することがメインとなりそうです。
以上、f-strings(f文字列)の使い方を説明しました。
次は、f-strings(f文字列)の注意点を確認します。
f-strings(f文字列)の注意点
f-stringsは、Python 3.6以降のみ利用できます。
このことは大前提となります。
PEP 498において、f-stringsへの対応が実施されました。
https://peps.python.org/pep-0498/
そうは言っても、大抵の場合は問題ないでしょう。
以下は、Python公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
現時点(2022年3月)では、Python 3.7以降がサポート対象という状況ですからね。
適切にメンテナンスしていれば、ほぼ問題なくf-stringsを利用できるでしょう。
あとは、以下を文字列に含めたい場合には工夫が必要となります。
- 引用符「”」「’」
- 波括弧(中括弧)「{}」
それぞれを下記で説明します。
引用符「”」「’」
結論のみ書きます。
三連引用符「”””」を使います。
これを使えば、引用符で困ることはないでしょう。
mojiretu = f"""文字列中に「"」や「'」を使いたい""" print(mojiretu)
実行した結果は、以下。
文字列中に「"」や「'」を使いたい
波括弧(中括弧)「{}」
二重にすれば、エスケープできます。
mojiretu1 = f"文字列中に{{}}を使いたい" print(mojiretu1) mojiretu2 = f"文字列中に{{と}}を使いたい" print(mojiretu2)
上記コードを実行した結果は、以下。
文字列中に{}を使いたい 文字列中に{と}を使いたい
以上、f-strings(f文字列)の注意点について説明しました。