非工作示例:

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

所需输出:

 {Hello} 42 

当前回答

key = "FOOBAR"
print(f"hello {{{key}}}")

输出

hello {FOOBAR}

万一有人想用fstrings在大括号内打印东西。

其他回答

OP撰写了以下评论:

我试图为某些目的格式化一个小JSON,例如:“{”all“:false,”selected“:”{}“}”。格式化(数据)以获得类似于{”all:false,“selected”:“1,2”}的内容

在处理JSON时,“转义括号”问题很常见。

我建议这样做:

import json
data = "1,2"
mydict = {"all": "false", "selected": data}
json.dumps(mydict)

它比替代方案更干净,即:

'{{"all": false, "selected": "{}"}}'.format(data)

当json字符串比示例更复杂时,使用json库无疑是更好的选择。

Python 3.6+(2017)

在最近的Python版本中,可以使用f-string(另请参见PEP498)。

对于f字符串,应该使用双{{或}}

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

产生所需的

 {Hello} 42

如果需要解析括号中的表达式而不是使用文本,则需要三组括号:

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

生产

{hello}

如果需要在字符串中保留两个大括号,则变量的每一侧都需要5个大括号。

>>> myvar = 'test'
>>> "{{{{{0}}}}}".format(myvar)
'{{test}}'

尝试这样做:

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

我使用了双{{}}来防止fstring值注入,

例如,这里是我的Postgres UPDATE语句,用于更新整数数组列,该列采用表达式{}来捕获数组,即:

ports=“{100200300}”

使用fstrings,

ports = [1,2,3]

query = f"""
   UPDATE table SET ports = '{{{ports}}}' WHERE id = 1
"""

实际查询语句将是,

UPDATE table SET ports = '{1,2,3}'

这是一个有效的延期