f-Strings はPython 3.6から利用でき、文字列のフォーマットに非常に役立ちます。
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Python 3のf-Strings:改善された文字列フォーマット構文(ガイド) でそれらの詳細を読んでください。興味深いパターンを見つけました。
トリプルブレースを使用すると、ストリング内にシングルブレースのみが存在することに注意してください。
>>> f"{{{74}}}" '{74}'
ただし、3つ以上のブレースを使用する場合、表示するブレースを増やすことができます。
>>> f"{{{{74}}}}" '{{74}}'
そして、これはまさにそうです:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
2つの{
〜3、結果は同じです:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
したがって、最大4つ必要です! ({{{{
)2つのブレースを出力として取得するには:
>>> f'{{{{74}}}}'
'{{74}}'
どうしてこれなの? 2つのブレースでPythonが必要になった時点で追加のブレースが必要ですか?
二重中括弧は中括弧をエスケープするため、補間は行われません:{{
➝{
、および}}
➝}
。 74
は変更されていない文字列'74'
のままです。
トリプルブレースでは、上記と同様に、外側のダブルブレースがエスケープされます。一方、内側の中括弧は、値74
の通常の文字列補間につながります。
つまり、文字列f'{{{74}}}'
はf'{{ {74} }}'
と同等ですが、スペースなし(または同等に、'{' + f'{74}' + '}'
と同等)です。
数値定数を変数に置き換えると、違いがわかります。
In [1]: x = 74
In [2]: f'{{x}}'
Out[2]: '{x}'
In [3]: f'{{{x}}}'
Out[3]: '{74}'