คุณทำไม่ได้ backslashes ไม่สามารถปรากฏอยู่ภายในวงเล็บปีกกา{}
; การทำเช่นนั้นส่งผลให้SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
ระบุไว้ในPEPสำหรับ f-strings:
แบ็กสแลชอาจไม่ปรากฏในส่วนนิพจน์ของ f-strings [... ]
ทางเลือกหนึ่งคือการยอมรับ'\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-strings ด้วยเหตุผลบางประการ
เพียงเพราะมีบางอย่างใหม่ไม่ได้หมายความว่าคุณควรลองทำทุกอย่างกับมัน ;-)
f"Winners are:\n{chr(10).join(names)}"