你不能。大括号内不能出现反斜杠{};这样做会导致SyntaxError:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
这是在PEP 中为 f 字符串指定的:
反斜杠不能出现在 f 字符串的表达式部分,[...]
一个选项是将'\n' 分配给一个名称,然后在f-string 中分配.join;也就是说,不使用文字:
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
结果:
Winners are:
Adam
Bob
Cyril
@wim 指定的另一个选项是使用chr(10) 返回\n,然后加入其中。 f"Winners are:\n{chr(10).join(names)}"
当然,还有一个是事先'\n'.join,然后相应地添加名称:
n = "\n".join(names)
text = f"Winners are:\n{n}"
这会产生相同的输出。
注意:
这是f-strings 和str.format 之间的细微差别之一。在后者中,您始终可以使用标点符号,前提是已解压缩包含这些键的相应古怪字典:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(请不要这样做。)
在前者中,标点符号是不允许的,因为您不能拥有使用它们的标识符。
除此之外:我肯定会选择print 或format,因为其他答案建议作为替代方案。我给出的选项仅在您出于某种原因必须使用 f 字符串时才适用。
仅仅因为一些东西是新的,并不意味着你应该尝试用它做任何事情;-)