如何在使用.format(或f-string)时转义大括号({})字符?

2536 投票
23 回答
1090740 浏览
提问于 2025-04-16 14:36

这是一个不工作的例子:

print(" \{ Hello \} {0} ".format(42))

这是我们想要的输出结果:

 {Hello} 42 

23 个回答

117

你可以通过把大括号写两次来解决这个问题。

比如:

x = "{{ Hello }} {0}"
print(x.format(42))
271

Python 3.6及以上版本(2017年)

在最近的Python版本中,我们可以使用f-strings(也可以参考PEP498)。

使用f-strings时,要用两个{{}}

n = 42  
print(f" {{Hello}} {n} ")

这样就能得到想要的结果。

 {Hello} 42

如果你想在括号里计算一个表达式,而不是直接使用文字内容,你需要用三组括号:

hello = "HELLO"
print(f"{{{hello.lower()}}}")

这样就能得到

{hello}
3371

你需要把 {{}} 各加一倍:

>>> x = " {{ Hello }} {0} "
>>> print(x.format(42))
' { Hello } 42 '

这里是 Python 文档中关于格式字符串语法 的相关部分:

格式字符串包含用大括号 {} 包围的“替换字段”。任何不在大括号里的内容都被视为普通文本,会原封不动地输出。如果你想在普通文本中包含一个大括号字符,可以通过加倍来实现:也就是用 {{}}

撰写回答