web-dev-qa-db-ja.com

python 3.6でf文字列をエスケープする方法は?

中かっこが必要な文字列がありますが、f文字列機能も利用しています。これに機能する構文はありますか?

動作しない2つの方法を次に示します。リテラルテキスト「{bar} "文字列の一部として。

foo = "test"
fstring = f"{foo} {bar}"

NameError:名前 'bar'は定義されていません

fstring = f"{foo} \{bar\}"

SyntaxError:f文字列式部分にバックスラッシュを含めることはできません

望ましい結果:

'test {bar}'

編集:この質問には python文字列でリテラル中括弧文字を印刷し、その上で.formatを使用できますか? と同じ答えがありますが、 format関数がf-stringと同じルールを使用していることを知っている場合にのみ、それを知ることができます。

33
JDAnders

パーサーからカスタム構文エラーがありますが、 同じトリック は通常の文字列と同様に機能します。

ダブルカーリーを使用する:

>>> foo = 'test'
>>> f'{foo} {{bar}}'
'test {bar}'

それは仕様で言及されています here およびドキュメント here

45
wim