如何转义 f 字符串中的大括号?

How to escape curly-brackets in f-strings?

我有一个字符串,我希望在其中使用大括号,但也可以利用 f 字符串功能。有一些适用于此的语法吗?

这里有两种方法不起作用。我想将文字文本 {bar} 作为字符串的一部分。

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

NameError: name 'bar' is not defined

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

SyntaxError: f-string expression part cannot include a backslash

想要的结果:

'test {bar}'

编辑:看起来这个问题的答案与 How can I print literal curly-brace characters in a string and also use .format on it? 相同,但您只有知道 str.format 使用与 f 字符串相同的规则才能知道。所以希望这个问题在将 f 字符串搜索者与这个答案联系起来方面具有价值。

虽然解析器存在自定义语法错误,但 same trick 可以在常规字符串上调用 .format

使用双卷曲:

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

规范中提到了它 here and the docs here