我想知道如何使用f字符串以Python方式格式化此 case :
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
问题是'\'
不能在f字符串的{...}
表达式部分内使用.
Winners are:
Adam
Bob
Cyril
我想知道如何使用f字符串以Python方式格式化此 case :
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
问题是'\'
不能在f字符串的{...}
表达式部分内使用.
Winners are:
Adam
Bob
Cyril
不能.反斜杠不能出现在花括号{}
内;这样做会导致SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
对于f字符串,这在PEP中指定:
反斜杠可能不会出现在f字符串的表达式部分[…]
一种 Select 是将'\n'
赋给一个名称,然后将.join
赋给f
字符串内的那个名称;也就是说,不使用文字:
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
个字符串和str.format
个字符串之间的一个小差异.在后一种情况下,只要相应的古怪dict被解包,并且包含这些键,就可以始终使用标点符号:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(请不要这样做.)
在前者中,标点符号是不允许的,因为不能有使用标点符号的标识符.
旁白:我肯定会 Select print
或format
,正如其他答案所建议的那样.我给出的选项仅适用于出于某种原因使用f字符串的情况.
仅仅因为有些东西是新的,并不意味着你应该try 用它来做每件事;-)