f-string
是Python 3.6中的新功能之一。但是当我尝试这样做时:
>>> f"\{10}"
'\\{10'
我无法理解为什么左花括号
'{'
会出现在结果中。我认为结果应该与 str.format
相同:>>> "\{}".format(10)
'\\10'
在PEP-0498中没有明确回答这个问题。那么是什么导致左花括号
'{'
保留在结果中,以及什么导致了f-string
和 str.format()
之间的差异?f-string
是Python 3.6中的新功能之一。>>> f"\{10}"
'\\{10'
'{'
会出现在结果中。我认为结果应该与 str.format
相同:>>> "\{}".format(10)
'\\10'
'{'
保留在结果中,以及什么导致了f-string
和 str.format()
之间的差异?这是一个错误。目前有效的方法是使用Unicode文字\u005c
来代替 \
:
>>> f'\u005c{10}'
'\\10'
或者,使用原始的f
字符串也可以达到类似的效果:
>>> rf'\{10}'
'\\10'
使用 '\'
似乎会导致两件奇怪的事情同时发生:
'{'
)被转义,因此会出现在结果字符串中。例如:
>>> f'\{2+3}'
'\\{5'
>>> a = 20
>>> f'\{a+30}'
'\\{50'
无论如何,我很快就会填写一个错误报告(因为我看到你还没有),并在得到回复后进行更新。
更新:创建了 Issue 29104 - 反斜杠在格式化字符串结果中产生左括号,如果您感兴趣,请查看那里的对话。
更新2:使用PR 490已解决该问题。