使用 .format 时如何在字符串中打印大括号字符?
问:
非工作示例:
print(" \{ Hello \} {0} ".format(42))
期望的输出:
{
Hello} 42
答1:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
您需要将 { { 和 }} 加倍:
>>> x = " {
{ Hello }} {0} "
>>> print(x.format(42))
' {
Hello } 42 '
以下是 Python documentation for format string syntax 的相关部分:
格式字符串包含用大括号 {} 包围的“替换字段”。大括号中未包含的任何内容都被视为文字文本,它会原封不动地复制到输出中。如果您需要在文字文本中包含大括号字符,可以通过加倍来转义:{ { 和 }}。
huntsbot.com – 高效赚钱,自由工作
所以如果你想打印“{42}”,你会使用 "{ { {0}}}".format(42) !
如果你想要一个花括号怎么办? "{ something { } {value}".format(42) 不起作用。
"{ {".format() 和 "}}".format() 打印单个花括号。在您的示例中: print "{ { something { { }} {0}".format(42) 将打印 "{ something { } 42"。
{0} 是什么意思?
@Imray:{0} 指的是 .format() 的第一个参数。只要您为 .format() 提供相同数量的参数,您就可以打印多个值,例如 {0} docs.python.org/library/string.html#format-examples {0}。有关详细示例,请参阅 docs.python.org/library/string.html#format-examples。
答2:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
Python 3.6+ (2017)
在最新版本的 Python 中,人们将使用 f-strings(另请参阅 PEP498)。
对于 f 字符串,应该使用双 { { 或 }}
n = 42
print(f" {
{Hello}} {n} ")
产生所需的
{
Hello} 42
如果您需要解析括号中的表达式而不是使用文字文本,则需要三组括号:
hello = "HELLO"
print(f"{
{
{hello.lower()}}}")
生产
{
hello}
从 my_greet = "HELLO" 可以得到 {hello} 作为输出,只使用 2 组括号和 print(f"{ {my_greet.lower()} }")。只需在括号之间留一个空格即可。
如果您在 rona 时代使用 Python3.6+,这现在应该是公认的答案。
@Gwi7d31 不,f 字符串不能替代 str.format()。例如,this answer I wrote 不可能用于 f 字符串,因为模板来自输入,而不是源代码。
@wjandrea 您的链接确实与 OPs 问题无关。当您通过 .format() 和字典解包方法在链接的答案中删除它们时,OP 希望保留花括号。如果您想在 Python 3.6+ 中保留 {},并且想在字符串中插入一个值,this is the way。这就是手头的问题。我也从未说过 f-strings 可以替代 .format()。你之前这么说。
@Gwi 我的意思是,这个问题是关于 str.format(),而不是 f 字符串,它们不相互兼容。
答3:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
你通过加倍大括号来逃避它。
例如:
x = "{
{ Hello }} {0}"
print(x.format(42))
答4:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
OP 写了这条评论:
我试图出于某些目的格式化一个小的 JSON,例如:‘{“all”: false, “selected”:“{}”}’.format(data) 以获得类似 {“all”: false, “选择”:“1,2”}
在处理 JSON 时出现“转义大括号”问题是很常见的。
我建议这样做:
import json
data = "1,2"
mydict = {
"all": "false", "selected": data}
json.dumps(mydict)
它比替代方案更清洁,即:
'{
{
"all": false, "selected": "{}"}}'.format(data)
当 JSON 字符串比示例更复杂时,使用 json 库绝对是首选。
阿门!这似乎需要更多的工作,但使用库来做图书馆应该做的事情,而不是偷工减料……可以做更好的事情。
但是不能保证 Python 对象中键的顺序......不过,可以保证 JSON 库以 JSON 方式序列化。
wizzwizz4:好点。从 Python 3.6 开始,字典是按插入顺序排列的,所以这不是问题。 2.7 和 3.5 之间的 Python 版本可以使用集合库中的 OrderedDict。
如果,例如 data = 'foo"',另一种选择也是非常错误的,因为 data 的值中的 " 不会被正确转义。
如果您正在处理 JSON,那么此答案适合您。它在可读性和可维护性方面获胜——想象一下处理复杂的 JSON 结构和其中的大量双括号
答5:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
您想用字符 { 或 } 格式化字符串
你只需要把它们加倍。
用 f’{ {’ 和 } 用 f’}}’ 格式化 {
所以 :
name = "bob"
print(f'Hello {
name} ! I want to print }} and {
{
')
输出 :
你好鲍勃!我想打印 } 和 {
答6:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
尝试这个:
x = “{ { Hello }} {0}”
答7:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
尝试这样做:
x = " {
{ Hello }} {0} "
print x.format(42)
答8:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
虽然不是更好,但仅供参考,您也可以这样做:
>>> x = '{
}Hello{
} {
}'
>>> print x.format('{','}',42)
{
Hello} 42
例如,当有人想要打印 {argument} 时,它可能很有用。它可能比 ‘{ { {}}}’.format(‘argument’) 更具可读性
请注意,您在 Python 2.7 之后省略了参数位置(例如 {} 而不是 {0})
答9:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
如果需要在字符串中保留两个花括号,则需要在变量的每一侧使用 5 个花括号。
>>> myvar = 'test'
>>> "{
{
{
{
{0}}}}}".format(myvar)
'{
{
test}}'
对于那些使用 f 字符串的人,在两边使用 4 个花括号而不是 5 个
@TerryA .format 和 f 字符串之间的大括号行为没有区别。代码 a = 1; print('{ { { { {a}}}}}'.format(a=a)) 产生与 a = 1; print(f'{ { { { {a}}}}}') 相同的结果。
答10:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
f 字符串(python 3)
您可以避免通过使用 f-strings ONLY 来处理您希望应用 f-magic 的字符串部分,并使用常规 (dumb ) 所有文字的字符串,可能包含“不安全”的特殊字符。 Let python do the string joining 只需将多个字符串堆叠在一起即可。
number = 42
print(" { Hello }"
f" {number} "
"{ thanks for all the fish }")
### OUTPUT:
{
Hello } 42 {
thanks for all the fish }
注意:字符串之间的换行不是必需的。我添加它们只是为了便于阅读。您也可以编写上面的代码,如下所示: ⚠️ 警告:这可能会伤害您的眼睛或让您头晕目眩! print(“{Hello}“f”{number}”“{感谢所有的鱼}”)
答11:
huntsbot.com – 高效赚钱,自由工作
key = "FOOBAR"
print(f"hello {
{
{key}}}")
输出
hello {
FOOBAR}
如果有人想使用 fstrings 在大括号内打印一些东西。
原文链接:https://www.huntsbot.com/qa/qX6n/how-do-i-print-curly-brace-characters-in-a-string-while-using-format?lang=zh_CN&from=csdn
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
还没有评论,来说两句吧...