Nie możesz. Wewnątrz nawiasów klamrowych nie mogą pojawić się ukośne ukośne {}; spowoduje to SyntaxError:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Jest to określone w PEP dla f-stringów:
Ukośniki odwrotne mogą nie pojawiać się wewnątrz fragmentów wyrażenia f-stringów, [...]
Jedną z opcji jest przypisanie '\n'nazwy, a następnie .joinumieszczenie jej wewnątrz f-string; to znaczy bez użycia literału:
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
Prowadzi do:
Winners are:
Adam
Bob
Cyril
Inną opcją, określone przez @wim, jest użycie chr(10)aby \npowrócił, a potem przystąpić tam.f"Winners are:\n{chr(10).join(names)}"
Jeszcze innym jest oczywiście '\n'.joinwcześniejsze dodanie nazwy:
n = "\n".join(names)
text = f"Winners are:\n{n}"
co daje taki sam wynik.
Uwaga:
To jedna z małych różnic między f-strings i str.format. W tym drugim przypadku zawsze możesz użyć interpunkcji, pod warunkiem, że zostanie rozpakowany odpowiedni zwariowany dykt, który zawiera te klucze:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(Proszę, nie rób tego.)
W pierwszym przypadku interpunkcja nie jest dozwolona, ponieważ nie możesz mieć identyfikatorów, które ich używają.
Poza tym: zdecydowanie wybrałbym printlub format, jak sugerują inne odpowiedzi, jako alternatywę. Opcje, które podałem, mają zastosowanie tylko wtedy, gdy z jakiegoś powodu musisz użyć f-stringów.
To, że coś jest nowe, nie oznacza, że powinieneś próbować i robić z tym wszystko ;-)
f"Winners are:\n{chr(10).join(names)}"