Python ตอนที่ 52 จัดรูปแบบข้อความ ด้วยเมธอด format()

เมธอด format() เป็นเมธอดของสตริง ใช้สำหรับจัดรูปแบบการแสดงผลของสตริงที่กำหนด ซึ่งเมื่อจะนำไปแสดงผล ต้องแสดงผลใน placeholder ซึ่งจะถูกกำหนดไว้ภายในเครื่องหมาย curly brackets {} ดังนี้ {price:.2f}

รูปแบบการใช้งานเมธอด format()

 string.format(value1, value2...) 
  • value1, value2… คือ ค่าที่สามารถนำไปจัดรูปแบบและแทรกลงในสตริงได้ สามารถมีได้หลายค่า โดยขั้นด้วยเครื่องหมายคอมมา (,) ซึ่งค่าที่กำหนดนี้อาจเป็นตัวเลข หรือข้อมูลแบบ key=value list หรือข้อมูลชนิดอื่น ๆ ก็ได้

placeholder ตำแหน่งที่จะใช้แสดงค่าที่จะจัดรูปแบบ

placeholder คือตำแหน่งที่เราจะจองไว้สำหรับการแทรกค่าที่นำมาจัดรูปแบบ ซึ่งจะถูกกำกับด้วยเครื่องหมาย {} ซึ่งอาจจะเป็นชื่อตัวแปร เช่น {price} , และอินเด็กซ์ เช่น {0}, placeholders เปล่า ๆ แบบนี้ {} ก็ได้เช่นกัน

ตัวอย่างการใช้งานเมธอด format() รูปแบบต่าง ๆ

mytext = "My name is {name}, I'am {age} years old.".format(name = "Nai", age = 35)

print(mytext)    

จากตัวอย่าง เราสร้าง placeholder ไว้ในสตริง 2 ตัว คือ {name} และ {age} หลังจากนั้นใช้เมธอด format() เพื่อนำค่าที่ต้องการไปวางใน placeholder ที่เตรียมไว้ โดยระบุพารามิเตอร์ 2 ตัว ตามจำนวน placeholder ที่เตรียมไว้ ดังนี้

  • name = "Nai", age = 35

จากโค้ดตัวอย่างนั้น ค่า “Nai” จะถูกนำไปแทรกแทนที่ {name} เพราะมีเชื่อเหมือนกันกับคีย์ name ( name = "Nai" ) ส่วนค่า 35 จะถูกนำไปแทนที่ {age} ด้วยเหตุผลเดียวกัน

mytext = "My name is {0}, I'am {1} years old.".format("Nai", 35)

print(mytext)

จากโค้ดตัวอย่างด้านบน พารามิเตอร์ตัวที่ 1 คือ “Nai” จะถูกตำไปแทนที่ {0} เพราะเป็น placeholder ลำดับที่ 1 ส่วนพารามิเตอร์ตัวที่ 2 คือ 35 จะถูกนำไปแทนที่ {1} ตามลำดับหมายเลขอินเด็กซ์

mytext = "My name is {}, I'am {} years old.".format("Nai", 35)

print(mytext)

จากโค้ดตัวอย่างด้านบน เราไม่ได้ระบุหมายเลขอินเด็กซ์กำกับ placeholder ดังนั้น placeholder ไหนอยู่ก่อน จะถือว่าอันนั้นเป็นอันแรก เมื่อเป็นเช่นนี้ ทั้ง 2 ตัว คือ “Nai” และ 35 จะถูกนำไปแทนที่ placeholder ทั้งสองตำแหน่งตามลำดับการวางก่อนหลัง

การจัดรูปแบบจุดทศนิยมให้ตัวเลข

เราสามารถจัดรูปแบบการแสดงผลให้กับสตริงใน placeholder ได้ เช่น หากต้องการให้แสดงตัวเลขเป็นตัวเลขทศนิยม 2 ตำแหน่ง ให้ใส่เครื่องหมาย : ตามด้วย . ตามด้วยตัวเลขกำหนดทศนิยม ตามด้วยตัอักษร f หลังชื่อ placeholder ซึ่งจะได้ดังนี้ {price:.2f} ดังโค้ดตัวอย่าง

mytext = "Price of this product is {price:.2f} dollars"

print(mytext.format(price = 50))