使用 .format 时如何在字符串中打印大括号字符?

问:

非工作示例:

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

期望的输出:

  1. {
  2. Hello} 42

答1:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

您需要将 { { 和 }} 加倍:

  1. >>> x = " {
  2. { Hello }} {0} "
  3. >>> print(x.format(42))
  4. ' {
  5. 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 字符串,应该使用双 { { 或 }}

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

产生所需的

  1. {
  2. Hello} 42

如果您需要解析括号中的表达式而不是使用文字文本,则需要三组括号:

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

生产

  1. {
  2. 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开始!

你通过加倍大括号来逃避它。

例如:

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

答4:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

OP 写了这条评论:

我试图出于某些目的格式化一个小的 JSON,例如:‘{“all”: false, “selected”:“{}”}’.format(data) 以获得类似 {“all”: false, “选择”:“1,2”}

在处理 JSON 时出现“转义大括号”问题是很常见的。

我建议这样做:

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

它比替代方案更清洁,即:

  1. '{
  2. {
  3. "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’}}’ 格式化 {

所以 :

  1. name = "bob"
  2. print(f'Hello {
  3. name} ! I want to print }} and {
  4. {
  5. ')

输出 :

你好鲍勃!我想打印 } 和 {

答6:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

尝试这个:

x = “{ { Hello }} {0}”

答7:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

尝试这样做:

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

答8:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

虽然不是更好,但仅供参考,您也可以这样做:

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

例如,当有人想要打印 {argument} 时,它可能很有用。它可能比 ‘{ { {}}}’.format(‘argument’) 更具可读性

请注意,您在 Python 2.7 之后省略了参数位置(例如 {} 而不是 {0})

答9:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

如果需要在字符串中保留两个花括号,则需要在变量的每一侧使用 5 个花括号。

  1. >>> myvar = 'test'
  2. >>> "{
  3. {
  4. {
  5. {
  6. {0}}}}}".format(myvar)
  7. '{
  8. {
  9. 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 只需将多个字符串堆叠在一起即可。

  1. number = 42
  2. print(" { Hello }"
  3. f" {number} "
  4. "{ thanks for all the fish }")
  5. ### OUTPUT:
  6. {
  7. Hello } 42 {
  8. thanks for all the fish }

注意:字符串之间的换行不是必需的。我添加它们只是为了便于阅读。您也可以编写上面的代码,如下所示: ⚠️ 警告:这可能会伤害您的眼睛或让您头晕目眩! print(“{Hello}“f”{number}”“{感谢所有的鱼}”)

答11:

huntsbot.com – 高效赚钱,自由工作

  1. key = "FOOBAR"
  2. print(f"hello {
  3. {
  4. {key}}}")

输出

  1. hello {
  2. 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 条评论,20人围观)

还没有评论,来说两句吧...

相关阅读