使用 .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+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值