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

How can I print literal curly-brace characters in python string and also use .format on it?

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

给我:Key Error: Hello\\

我想打印输出:{Hello} 42


你需要{{}}:双定位

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

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

Format strings contain"replacement fields" surrounded by curly braces {}. Anything that is not contained in braces is considered literal text, which is copied unchanged to the output. If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}.


它是由括号(你)。

电子商务:

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


本评论写道:"手术

1
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。

我的建议是这样做的:

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

它是清洁比替代:

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

json图书馆使用JSON字符串和优选的是当得到更复杂的比的例子。


试试这样做:

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

试试这个:

x ="{{ Hello }} {0}"


Python 3.6 +(2017年)

在最近的一个版本(F使用Python字符串(湖因此pep498)。

一个字符串的F -或应该使用双{{}}

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

所需的子帧。

1
 {Hello} 42

如果你需要解决在括号表达而不是使用文字文本你需要做三套。

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

副车架

1
{hello}


不需要任何更好的,只是参考,你可以这样做:

1
2
3
>>> x = '{}Hello{} {}'
>>> print x.format('{','}',42)
{Hello} 42

它可以是有用的例如,当有人想{argument}打印。它是更多比'{{{}}}'.format('argument')可读

注意你的位置(例如{}omit论点而不是Python 2.7售后{0})


如果你是要做很多,它可能是很好的一个效用函数定义的替代而不是让你使用任意支撑,样

1
2
3
4
5
6
7
8
9
10
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串的长度或两个字符串(可迭代变量的多字符分隔符)。


原因是,{}是如此在你的大学.format()语法案例.format()不认识{Hello}所以没有错误。

你可以覆盖它使用双括号括号{ },

1
x =" {{ Hello }} {0}"

尝试%s文本格式化,

1
2
x =" { Hello } %s"
print x%(42)