Yapamazsın. Ters eğik çizgi küme parantezlerinin içinde görünemez {}
; bunu yapmak şunla sonuçlanır SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
Bu, f dizeleri için PEP'de belirtilmiştir :
F dizelerinin ifade bölümlerinde ters eğik çizgiler görünmeyebilir, [...]
Seçeneklerden biri '\n'
, bir isme atamak ve ardından -string'in .join
içinde bunu f
yapmaktır; yani, birebir kullanmadan:
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
Sonuçlar:
Winners are:
Adam
Bob
Cyril
@Wim tarafından belirtildiği gibi başka bir seçenek, iade chr(10)
almak \n
ve oraya katılmak için kullanmaktır .f"Winners are:\n{chr(10).join(names)}"
Bir başka tabii ki, '\n'.join
önceden ve sonra adı buna göre eklemek:
n = "\n".join(names)
text = f"Winners are:\n{n}"
aynı çıktı ile sonuçlanır.
Not:
Bu, f
-stringler ve str.format
. İkincisinde, bu anahtarları içeren karşılık gelen tuhaf bir diktenin paketinden çıkarılması durumunda her zaman noktalama işaretini kullanabilirsiniz:
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(Lütfen bunu yapmayın.)
İlkinde, onları kullanan tanımlayıcılara sahip olamayacağınız için noktalama işaretlerine izin verilmez.
Bir kenara: Diğer cevapların alternatif olarak önerdiği gibi kesinlikle print
veya tercih ederim format
. Verdiğim seçenekler, sadece herhangi bir nedenle f-dizelerini kullanmanız gerekiyorsa geçerlidir .
Bir şeyin yeni olması, onunla her şeyi denemeniz gerektiği anlamına gelmez ;-)
f"Winners are:\n{chr(10).join(names)}"