>> f"\{10}" '\\{10' 我不明白为什么左花括号 '{' 保留在结果中。我认为结果应该与 str.-6ren">
gpt4 book ai didi

python - 为什么在 Python 3.6 中计算 f"\{10}"时符号 '{' 仍然存在?

转载 作者:太空狗 更新时间:2023-10-29 17:31:29 25 4
gpt4 key购买 nike

f-string 是 Python 3.6 中的新功能之一。

但是当我尝试这样做时:

>>> f"\{10}"
'\\{10'

我不明白为什么左花括号 '{' 保留在结果中。我认为结果应该与 str.format 相同:

>>> "\{}".format(10)
'\\10'

PEP-0498它没有明确回答这个问题。那么是什么导致左花括号 '{' 保留在结果中以及是什么导致了 f-stringstr.format()?

最佳答案

这是一个错误。目前有效的一种方法是使用 Unicode 文字 \u005c 代替 \:

>>> f'\u005c{10}'
'\\10'

或者,具有类似效果,使用原始 f-string:

>>> rf'\{10}'
'\\10'

通过使用 '\' 似乎两件奇怪的事情同时发生了:

  • 下一个字符(此处为 '{')被转义,将其留在结果字符串中。
  • 格式化的字符串也被求值,这很奇怪,不是预期的

恰当的例子:

>>> f'\{2+3}'
'\\{5'
>>> a = 20
>>> f'\{a+30}'
'\\{50'

无论如何,我会尽快填写错误报告(因为我发现你还没有)并在收到回复时更新。

更新:已创建 Issue 29104 -- Left bracket remains in format string result when '\' preceeds it ,如果您有兴趣,请查看那里的对话。

更新 2:问题已通过 PR 490 解决.

关于python - 为什么在 Python 3.6 中计算 f"\{10}"时符号 '{' 仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41330097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com