Ви не можете. Поворотні риски не можуть з’являтися всередині фігурних дужок {}
; це призводить до SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Це вказано в PEP для f-рядків:
Зворотні скісні риски можуть не відображатися всередині частин виразу f-рядків, [...]
Одним із варіантів є присвоєння '\n'
імені, а потім .join
всередині f
-string; тобто без використання літералу:
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
-strings та str.format
. В останньому випадку ви завжди можете використовувати розділові знаки, які дозволяють розпакувати відповідний дурний дикт, що містить такі ключі:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(Будь ласка, не робіть цього.)
У першій пунктуація заборонена, оскільки ви не можете мати ідентифікатори, які їх використовують.
Окрім: я б точно вибрав print
або format
, як пропонують інші відповіді як альтернативу. Варіанти, які я надав, застосовуються лише в тому випадку, якщо з якихось причин ви повинні використовувати f-рядки.
Те, що щось нове, не означає, що потрібно намагатися робити все з цим ;-)
f"Winners are:\n{chr(10).join(names)}"