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 ตรงนี้ได้เลยฮะ

7. Input and Output
There are several ways to present the output of a program; data can be printed in a human-readable form, or written to a file for future use. This chapter will discuss some of the possibilities. Fa…

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"}).

อ่านเพิ่มเติมได้ที่ลิงก์ด้านล่างฮะ

string — Common string operations
Source code: Lib/string.py String constants: The constants defined in this module are: Custom String Formatting: The built-in string class provides the ability to do complex variable substitutions…

3. Jinja

ผมชอบอันนี้ เวลาที่ต้องการแบบ advance ฮะ มันก็คือ Jinja2 library

Jinja — Jinja Documentation (3.1.x)

รวบรัดก็คือ เราสามารถใช้ library ตัวนี้ ออกแบบ string format โดยที่สามารถใส่เงื่อนไขซับซ้อนเข้าไปได้ด้วยนะฮะ สำหรับ blog นี้เรารู้จักกันแบบพื้นฐานๆ กันก่อน

เริ่มจาก pip install jinja2 แล้วก็ใช้งานได้แบบตัวอย่างนี้ฮะ

ฟังก์ชัน .render() จะแทนค่าตัวแปรลงใน {{}} ฮะ

และเหมือนกับ String template ข้างบน เราสามารถใส่ parameter ในรูปของ keywords หรือ dict of key-value pairs ก็ได้เช่นกันฮะ