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) |
给我:
我想打印输出:
你需要
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) |
试试这样做:
1 2 | x =" {{ Hello }} {0}" print x.format(42) |
试试这个:
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 |
它可以是有用的例如,当有人想
注意你的位置(例如
如果你是要做很多,它可能是很好的一个效用函数定义的替代而不是让你使用任意支撑,样
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串的长度或两个字符串(可迭代变量的多字符分隔符)。
原因是,
你可以覆盖它使用双括号括号{ },
1 | x =" {{ Hello }} {0}" |
或
尝试
1 2 | x =" { Hello } %s" print x%(42) |