3 วิธีเขียน Python string template
String เป็น basic variable type แบบนึงที่เราใช้กันบ่อยมากๆ ซึ่งใน Python เองก็สามารถเขียนได้เป็นล้านรูปแบบ
ทีนี้ เรามี 3 วิธีที่เราจะมารู้จักกันว่า เราสามารถทำ string ให้เป็น template เพื่อใช้งานอย่างสะดวก และเข้าใจง่ายได้ยังไงได้บ้าง
1. f-string
อันนี้เบสิคสุดละฮะ เราขึ้นต้นด้วย f
และใส่ {}
ตรงตำแหน่งทีจะแทนด้วยตัวแปร ก็เสร็จแล้ว
เช่น
ใส่ f
ก่อน ตามด้วย quote pairs ไม่ว่าจะเป็น single-quotes ''
หรือ double-quotes ""
หรือ triple single-quotes ''''''
หรือกระทั่ง triple double-quotes """"""
อันนี้ก็ขึ้นอยู่กับว่าเรามี quote character อะไรข้างใน string นั้นรึเปล่า จะได้ไม่ต้องเขียน escape เพิ่มด้วย backslash \
- ถ้าเรามี string แบบหลายบรรทัด ก็ให้ใช้ triple single-quotes หรือ triple double-quotes.
- ถ้ามี single-quotes อยู่ใน string ก็ใช้ double-quotes ครอบ f-string
แล้วใส่ชื่อตัวแปรข้างใน {}
จริงๆ รายละเอียด วิธีการใช้มีอีกเยอะมาก เอาไว้ให้เรา customize ก็อ่านจาก official doc ตรงนี้ได้เลยฮะ
2. String template
อันนี้เป็นอีกตัวเลือกนึงฮะ มันเป็น library ที่เอาไว้ format string ได้ยืดหยุ่นมากขึ้นกว่า f-string และก็ไม่ต้อง install เพิ่มด้วยแหละ
แค่ from String import Template
ก็พร้อมใช้งานแล้ว
เราจะกำหนดตัวแปรด้วยเครื่องหมาย $
จากนั้นใช้ .substitute()
เพื่อ format หรือ .safe_substitute()
ก็ได้ เพื่อให้มันไม่เกิด error ถ้าตัวแปรที่เรากำหนดใน string ไม่ได้มีใน parameter
Parameter ก็สามารถเลือกได้ว่าจะเป็น keywords (key=value
) หรือ dict of key-value pairs ({"key":"value"}
).
อ่านเพิ่มเติมได้ที่ลิงก์ด้านล่างฮะ
3. Jinja
ผมชอบอันนี้ เวลาที่ต้องการแบบ advance ฮะ มันก็คือ Jinja2
library
รวบรัดก็คือ เราสามารถใช้ library ตัวนี้ ออกแบบ string format โดยที่สามารถใส่เงื่อนไขซับซ้อนเข้าไปได้ด้วยนะฮะ สำหรับ blog นี้เรารู้จักกันแบบพื้นฐานๆ กันก่อน
เริ่มจาก pip install jinja2
แล้วก็ใช้งานได้แบบตัวอย่างนี้ฮะ
ฟังก์ชัน .render()
จะแทนค่าตัวแปรลงใน {{}}
ฮะ
และเหมือนกับ String template ข้างบน เราสามารถใส่ parameter ในรูปของ keywords หรือ dict of key-value pairs ก็ได้เช่นกันฮะ