Vous ne pouvez pas. Les barres obliques inverses ne peuvent pas apparaître à l'intérieur des accolades {}
; cela se traduit par SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Ceci est spécifié dans le PEP pour les chaînes f:
Les barres obliques inverses peuvent ne pas apparaître dans les parties d'expression des chaînes f, [...]
Une option consiste à attribuer '\n'
un nom, puis .join
à celui-ci dans la f
chaîne -string; 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ésulte en:
Winners are:
Adam
Bob
Cyril
Une autre option, telle que spécifiée par @wim, consiste à utiliser chr(10)
pour être \n
renvoyé, puis à y rejoindre.f"Winners are:\n{chr(10).join(names)}"
Encore une autre, bien sûr, consiste à '\n'.join
ajouter au préalable le nom en conséquence:
n = "\n".join(names)
text = f"Winners are:\n{n}"
ce qui donne le même résultat.
Remarque:
C'est l'une des petites différences entre f
-strings et str.format
. Dans ce dernier, vous pouvez toujours utiliser la ponctuation à condition qu'un dict loufoque correspondant soit décompressé qui contient ces clés:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(Veuillez ne pas faire ça.)
Dans le premier cas, la ponctuation n'est pas autorisée car vous ne pouvez pas avoir d'identificateurs qui les utilisent.
À part: j'opterais certainement 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 devez pour une raison quelconque utiliser des chaînes f.
Ce n'est pas parce que quelque chose est nouveau que vous devriez essayer de tout faire avec ;-)
f"Winners are:\n{chr(10).join(names)}"