Vous ne pouvez pas. Les barres obliques inverses ne peuvent pas apparaître à l'intérieur des accolades. {}
; ce faisant, il en résulte une SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Ceci est spécifié dans le PEP pour les cordes F :
Les barres obliques inverses ne peuvent pas apparaître à l'intérieur des portions d'expression des chaînes f, [...].
L'une des options est l'assinging '\n'
à un nom et ensuite .join
sur cela à l'intérieur de la f
c'est-à-dire sans utiliser de littéral :
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
Résultats dans :
Winners are:
Adam
Bob
Cyril
Une autre option, comme spécifié par @wim, est d'utiliser chr(10)
pour obtenir \n
retourné et s'y joindre. f"Winners are:\n{chr(10).join(names)}"
Une autre encore, bien sûr, est de '\n'.join
au préalable, puis ajoutez le nom en conséquence :
n = "\n".join(names)
text = f"Winners are:\n{n}"
ce qui donne le même résultat.
Note :
C'est l'une des petites différences entre f
-stringues et str.format
. Dans ce dernier cas, vous pouvez toujours utiliser la ponctuation en garantissant qu'un dict wacky correspondant contenant ces clés est déballé :
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(S'il vous plaît, ne faites pas ça.)
Dans le premier cas, la ponctuation n'est pas autorisée parce que vous ne pouvez pas avoir d'identifiants qui les utilisent.
A part ça : j'opterais définitivement pour print
ou format
comme le suggèrent les autres réponses comme alternative. Les options que j'ai données ne s'appliquent que si vous doit pour une raison quelconque, utilisent des chaînes en F.
Ce n'est pas parce que quelque chose est nouveau que vous devez essayer de tout faire avec ;-)
18 votes
f"Winners are:\n{chr(10).join(names)}"