协慌网

登录 贡献 社区

如何在 python 字符串中打印文字大括号字符并在其上使用. format?

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

给我: Key Error: Hello\\

我想打印输出: {Hello} 42

答案

你需要加倍{{}}

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

以下是格式字符串语法Python 文档的相关部分:

格式字符串包含由大括号{}包围的 “替换字段”。大括号中未包含的任何内容都被视为文本文本,它将不加改变地复制到输出中。如果您需要在文字文本中包含大括号字符,可以通过加倍{{}}来对其进行转义。

你通过加倍括号来逃避它。

例如:

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

OP 写了这样的评论:

I was trying to format a small JSON for some purposes, like this: '{"all": false, "selected": "{}"}'.format(data) to get something like {"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库绝对是首选。