这f-string
是 Python 3.6 中的新特性之一。
但是当我尝试这个时:
>>> f"\{10}"
'\\{10'
我无法弄清楚为什么左花括号'{'
仍然在结果中。我认为结果应该与str.format
:
>>> "\{}".format(10)
'\\10'
在PEP-0498中,它没有明确回答这个问题。那么是什么导致左花括号保留在结果中,以及是什么导致了and'{'
之间的这种差异?f-string
str.format()
这f-string
是 Python 3.6 中的新特性之一。
但是当我尝试这个时:
>>> f"\{10}"
'\\{10'
我无法弄清楚为什么左花括号'{'
仍然在结果中。我认为结果应该与str.format
:
>>> "\{}".format(10)
'\\10'
在PEP-0498中,它没有明确回答这个问题。那么是什么导致左花括号保留在结果中,以及是什么导致了and'{'
之间的这种差异?f-string
str.format()
这是一个错误。\u005c
目前可行的一种方法是使用 Unicode 文字\
代替:
>>> f'\u005c{10}'
'\\10'
或者,具有类似效果,使用原始f
字符串:
>>> rf'\{10}'
'\\10'
通过使用'\'
,似乎两个奇怪的事情同时发生:
'{'
此处)被转义,将其留在结果字符串中。一个例子:
>>> f'\{2+3}'
'\\{5'
>>> a = 20
>>> f'\{a+30}'
'\\{50'
无论哪种方式,我都会很快填写错误报告(因为我看到你还没有)并在收到回复时更新。
更新:已创建问题 29104 - 左括号在 '\' 之前保留在格式字符串结果中,如果您有兴趣查看那里的对话。
更新 2:问题已通过PR 490解决。