[解決済み] f'{{74}}'はなぜf-Stringのf'{{74}}と同じなのですか?
2022-11-10 12:30:20
質問
f-文字列 は Python 3.6 から利用可能で、文字列の書式設定に非常に便利です。
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
で詳細を読む Python 3 の f-String。改良された文字列書式設定構文 (ガイド) . 面白いパターンが見つかりました。
三重の中括弧を使用すると、文字列には単一の中括弧しか含まれないことに注意してください。
>>> f"{{{74}}}" '{74}'
ただし、3つ以上の中括弧を使用すると、より多くの中括弧を表示させることができます。
>>> f"{{{{74}}}}" '{{74}}'
と、まさにこの通りです。
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
ここで、2つの
{
を三つに渡しても、結果は同じです。
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
ということで、4つまで必要です (
{{{{
) を出力する必要があります。
>>> f'{{{{74}}}}'
'{{74}}'
これはなぜでしょうか?Pythonがその瞬間から余分な1つを必要とするように、2つの中括弧で何が起こるのでしょうか?
どのように解決するのですか?
二重中括弧で中括弧をエスケープし、補間が起こらないようにします。
{{
➝
{
であり、かつ
}}
➝
}
. そして
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}'
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] 数字を通貨文字列としてフォーマットする方法
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] 文字列フォーマット:% vs. .format vs. f-stringリテラル
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?