f文字列
前回、concurrent.futuresでの返り値を取得する方法を解説しました。
今回はフォーマット文字列(f文字列)で「{}(波括弧・中括弧)」を使う方法を解説していきます。
f文字列とはprint関数で文字列を出力する際、変数を交えて出力する方法です。
書き方としては「f'{変数}’」で、この書き方の便利な点は「f'{変数} 文字列’」という感じで、文字列と合わせて使うことができる点です。
プログラムとして書いてみるとこんな感じです。
word = 'Apple'
print(f'{word} Watch')
実行結果
Apple Watch
どのような出力がされるのか分かりやすく記述できるので、個人的に気に入って使っています。
ちなみに他の出力の仕方はこちらの記事で色々試していますので、よかったらどうぞ。
ただこの文字列での難点は変数を「{}」でくくっていることから、「{}」は基本的に使用できないということです。
例えば先ほどの例で「Apple {Watch}」と出力したいため、こんなプログラムを書くとエラーになります。
word = 'Apple'
print(f'{word} {Watch}')
実行結果
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [4], in <cell line: 3>()
1 word = 'Apple'
----> 3 print(f'{word} {Watch}')
NameError: name 'Watch' is not defined
では「{}」を出力したい場合はどうしたらいいのでしょうか。
{}のエスケープ
「{}」を出力するには単純に2つ並べれば、1つの「{}」を出力することができます。
word = 'Apple'
print(f'{word} {{Watch}}')
実行結果
Apple {Watch}
そしてもし2つの「{}」を出力したい場合は、4つ並べればいいわけです。
word = 'Apple'
print(f'{word} {{{{Watch}}}}')
実行結果
Apple {{Watch}}
このように特殊文字を文字列として使えるようにすることをエスケープシーケンス(エスケープする)と言います。
クォーテーションのエスケープ
ついでにPythonの文字列のために使うクォーテーションのエスケープも見ておきましょう。
クォーテーションには「’(シングルクォーテーション)」,「”(ダブルクォーテーション)」があり、Pythonでは文字を文字列として認識させるために使用しています。
そのためシングルクォーテーションを文字列として認識させるために使用している場合は、文字列中にはシングルクォーテーションは基本的に使うことができません。
word = 'Apple'
print(f'{word} 'Watch'')
実行結果
Input In [8]
print(f'{word} 'Watch'')
^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
ダブルクォーテーションの場合も同じです。
使いたい場合は文字列として認識させるためのクォーテーションと文字列中のクォーテーションを分けます。
word = 'Apple'
print(f'{word} "Watch"')
実行結果
Apple "Watch"
先ほどの「{}」のように2つ並べることでエスケープすることもできますが、この場合はクォーテーションが出力されなくなってしまうようです。
word = 'Apple'
print(f'{word} ''Watch''')
実行結果
Apple Watch
クォーテーションを出力させる方法としては「\(バックスラッシュ)」(Windowsの場合は「¥」)を使う方法があります。
word = 'Apple'
print(f'{word} \'Watch\'')
実行結果
Apple 'Watch'
こういったエスケープ処理はすぐに忘れてしまいますが、とりあえず「2つ並べる」、「\(バックスラッシュ)」(Windowsは「¥」)を試してみて、ダメなら調べるでいけそうな気がします。
次回はSQLite3のLIKE句を使って、パターンマッチングをしてみます。
ではでは今回はこんな感じで。
コメント