【问题标题】:f-string with curly brace and function [duplicate]带花括号和函数的 f 字符串 [重复]
【发布时间】:2021-12-25 16:27:58
【问题描述】:

我搜索了现有的答案。我找到了打印花括号的答案,但它们也不包括在 f 字符串中执行函数。标记为重复的那个没有解决我的问题。

我尝试打印的部分字符串是从函数中解析的。我的字符串的静态部分包括花括号。我可以使用旧样式执行该功能,但我希望使用新的 f 字符串来执行此操作。最后的字符串应该是这样的:

test{aloha}

旧式作品:

>>> print('test{%s}'%(aloha()))
'test{aloha}'

f-string - 正如预期的那样,大括号没有被打印出来:

>>> print(f"test{(aloha())}")
'testaloha'

双卷曲的 f-string - 函数未执行:

>>> print(f"test{{(aloha())}}")
"test{(xor('label'.encode(), 13).decode())}"

f-string 转义花括号 - 语法错误:

>>> print(f"test\{{(aloha())}\}")
"SyntaxError: f-string: single '}' is not allowed"

f-string 只转义左大括号 - 不执行:

>>> print(f"test\{{(aloha())}}")
"test\{(xor('label'.encode(), 13).decode())}"

我是不是太过分了?

编辑:将原始执行的函数缩短为“aloha()”,但在我编辑时人们已经给出了有效的答案。他们的答案是正确的。

【问题讨论】:

  • 我知道像我想要完成的那样一个衬里会降低可读性,但为了学习,我正试图弄清楚如何做到这一点。节日快乐!
  • 问题已关闭并标记为重复,但我不认为它是重复的。我在发布我的问题之前看到了链接的问题,但这对我没有帮助,因为我的问题还有一个相关的部分。我在我自己的问题中展示了来自该链接问题的答案的结果。 :)

标签: python f-string one-liner


【解决方案1】:

你需要一个三重卷曲。每个双花括号构成一个转义的花括号:

>>> f"{{{1}}}"
'{1}'

【讨论】:

    【解决方案2】:

    这边:

    f"test{{{(xor('label'.encode(), 13).decode())}}}"
    

    【讨论】:

      猜你喜欢
      • 2023-01-29
      • 2019-05-23
      • 2011-10-30
      • 1970-01-01
      • 2019-02-25
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多