在 f 字符串中转义单括号

escape single bracket in f-string

我正在尝试按以下格式打印字符串:

"rob: {color: red  , number: 4}"

使用 f 字符串填充三个值:

f"{name}: color: {color}  , number: {number}" #missing brackets

这将打印:

"rob: color: red  , number: 4" #missing brackets

但我不知道如何按照我需要的方式转义单个括号。我知道 {{}} 可以让你转义括号,但这会在字符串的同一个地方打印出来。我在各自的位置尝试了 { { }{ } },但这只是抛出了一个错误。

显示变量时使用双括号,变量使用单括号。参见 this post

f"{name}: {{color: {color}  , number: {number} }}" 

目标:

"rob: {color: red  , number: 4}"

完成:

>>> name = 'rob'
>>> color = 'red'
>>> number = 4
>>> print(f"{name}: {{color: {color} , number: {number}}}")
rob: {color: red , number: 4}

您可以计算 f 字符串中的字符串文字 '{' 和字符串文字 '}',用大括号括起来进行计算:

f"{name}: {'{'}color: {color}, number: {number}{'}'}"

示例:

>>> name = 'bob'
>>> color = 'red'
>>> number = 4
>>> f"{name}: {'{'}color: {color}, number: {number}{'}'}"
'bob: {color: red, number: 4}'