非工作示例:
print(" \{ Hello \} {0} ".format(42))
所需输出:
{Hello} 42
非工作示例:
print(" \{ Hello \} {0} ".format(42))
所需输出:
{Hello} 42
当前回答
如果你要经常这样做,最好定义一个实用函数,让你使用任意的大括号替代,比如
def custom_format(string, brackets, *args, **kwargs):
if len(brackets) != 2:
raise ValueError('Expected two brackets. Got {}.'.format(len(brackets)))
padded = string.replace('{', '{{').replace('}', '}}')
substituted = padded.replace(brackets[0], '{').replace(brackets[1], '}')
formatted = substituted.format(*args, **kwargs)
return formatted
>>> custom_format('{{[cmd]} process 1}', brackets='[]', cmd='firefox.exe')
'{{firefox.exe} process 1}'
注意,这将在括号是长度为2的字符串或两个字符串的可迭代(对于多字符分隔符)的情况下工作。
其他回答
试试看:
x=“{{你好}}{0}”
原因是,{}是.format()的语法,因此在您的情况下.format)无法识别{Hello},因此引发了错误。
可以通过使用双花括号{{}}来覆盖它,
x = " {{ Hello }} {0} "
or
尝试%s进行文本格式化,
x = " { Hello } %s"
print x%(42)
如果需要在字符串中保留两个大括号,则变量的每一侧都需要5个大括号。
>>> myvar = 'test'
>>> "{{{{{0}}}}}".format(myvar)
'{{test}}'
我使用了双{{}}来防止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}'
这是一个有效的延期
Python 3.6+(2017)
在最近的Python版本中,可以使用f-string(另请参见PEP498)。
对于f字符串,应该使用双{{或}}
n = 42
print(f" {{Hello}} {n} ")
产生所需的
{Hello} 42
如果需要解析括号中的表达式而不是使用文本,则需要三组括号:
hello = "HELLO"
print(f"{{{hello.lower()}}}")
生产
{hello}