Você não pode. Barras invertidas não podem aparecer dentro das chaves {}
; fazer isso resulta em SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Isso é especificado no PEP para f-strings:
As barras invertidas podem não aparecer dentro das partes da expressão das strings f, [...]
Uma opção é atribuir '\n'
a um nome e depois .join
dentro da f
-string; ou seja, sem usar um literal:
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
Resulta em:
Winners are:
Adam
Bob
Cyril
Outra opção, conforme especificado por @wim, é usar chr(10)
para obter o \n
retorno e, em seguida, ingressar nele.f"Winners are:\n{chr(10).join(names)}"
Outra, é claro, é '\n'.join
antes e depois adicionar o nome de acordo:
n = "\n".join(names)
text = f"Winners are:\n{n}"
que resulta na mesma saída.
Nota:
Esta é uma das pequenas diferenças entre f
-strings e str.format
. No último, você sempre pode usar pontuação concedida que um ditado maluco correspondente é descompactado que contém essas chaves:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(Por favor, não faça isso.)
No primeiro caso, a pontuação não é permitida porque você não pode ter identificadores que os utilizem.
À parte: eu definitivamente optaria por print
ou format
, como as outras respostas sugerem como alternativa. As opções que dei se aplicam apenas se você precisar, por algum motivo, usar strings f.
Só porque algo é novo, não significa que você deva tentar fazer tudo com ele ;-)
f"Winners are:\n{chr(10).join(names)}"