Python จัดรูปแบบข้อความด้วย f-string



เวลาเราอยากพิมพ์ข้อความที่มีค่าจากตัวแปรปนอยู่ วิธีที่อ่านง่ายและเป็นมาตรฐานของ Python ยุคนี้คือ f-string เราแตะเรื่องนี้ไปนิดหน่อยตอนเรียน print() แล้ว บทนี้จะลงรายละเอียดให้ครบ

f-string คืออะไร

f-string คือสตริงที่มีตัว f นำหน้าเครื่องหมายคำพูด แล้วเราเอาชื่อตัวแปรใส่ในปีกกา {} ได้เลย Python จะแทนค่าให้อัตโนมัติ

name = "สมหญิง"
age = 25

print(f"สวัสดีค่ะ ฉันชื่อ {name} อายุ {age} ปี")

ผลลัพธ์:

สวัสดีค่ะ ฉันชื่อ สมหญิง อายุ 25 ปี

ลองเทียบกับวิธีเก่าที่ต้องเอา + มาต่อสตริงเป็นท่อน ๆ จะเห็นว่า f-string อ่านรู้เรื่องกว่าเยอะ และไม่ต้องแปลงตัวเลขเป็นสตริงเองด้วย

# แบบเก่า ยุ่งและอ่านยาก
print("สวัสดีค่ะ ฉันชื่อ " + name + " อายุ " + str(age) + " ปี")

ใส่นิพจน์ในปีกกาได้

ในปีกกาไม่จำเป็นต้องเป็นแค่ชื่อตัวแปร จะใส่การคำนวณ เรียกเมท็อด หรือเงื่อนไขก็ได้

price = 120
qty = 3

print(f"ราคารวม {price * qty} บาท")
print(f"ชื่อพิมพ์ใหญ่: {name.upper()}")

ผลลัพธ์:

ราคารวม 360 บาท
ชื่อพิมพ์ใหญ่: สมหญิง

จัดรูปแบบตัวเลข

ของเด็ดของ f-string คือการจัดรูปแบบตัวเลข ใส่เครื่องหมาย : หลังค่า แล้วตามด้วยรูปแบบที่ต้องการ

กำหนดจำนวนทศนิยม

pi = 3.14159265

print(f"{pi:.2f}")   # 3.14
print(f"{pi:.4f}")   # 3.1416

.2f แปลว่า “แสดงเป็นเลขทศนิยม 2 ตำแหน่ง” เหมาะมากเวลาแสดงราคาเงิน

total = 1250.5
print(f"ยอดชำระ {total:.2f} บาท")   # ยอดชำระ 1250.50 บาท

ใส่ตัวคั่นหลักพัน

salary = 1500000
print(f"เงินเดือน {salary:,} บาท")   # เงินเดือน 1,500,000 บาท

แสดงเป็นเปอร์เซ็นต์

ratio = 0.875
print(f"ความคืบหน้า {ratio:.0%}")   # ความคืบหน้า 88%

จัดข้อความให้เป็นคอลัมน์

เวลาทำตารางหรือรายการ เราอยากให้ข้อความเรียงตรงกัน กำหนดความกว้างและทิศทางการชิดได้

  • < ชิดซ้าย
  • > ชิดขวา
  • ^ กึ่งกลาง
print(f"{'สินค้า':<10}{'ราคา':>8}")
print(f"{'กาแฟ':<10}{45:>8}")
print(f"{'ชานม':<10}{40:>8}")
print(f"{'ขนมปัง':<10}{25:>8}")

ผลลัพธ์:

สินค้า         ราคา
กาแฟ             45
ชานม             40
ขนมปัง           25

ตัวเลข 10 และ 8 คือความกว้างของช่อง Python จะเติมช่องว่างให้เต็มตามนั้น

เทคนิคเล็ก ๆ ที่ใช้บ่อย

แสดงชื่อตัวแปรพร้อมค่า (ดีบั๊กเร็ว ๆ)

เติม = ต่อท้ายชื่อในปีกกา Python จะพิมพ์ทั้งชื่อและค่าให้

x = 42
print(f"{x=}")   # x=42

ขึ้นบรรทัดใหม่หลายบรรทัด

ใช้ f-string สามเครื่องหมายคำพูดเขียนข้อความยาว ๆ ได้

name = "สมชาย"
score = 78

report = f"""
รายงานผลสอบ
-----------
ชื่อ: {name}
คะแนน: {score}
สถานะ: {"ผ่าน" if score >= 50 else "ไม่ผ่าน"}
"""
print(report)

ผลลัพธ์:

รายงานผลสอบ
-----------
ชื่อ: สมชาย
คะแนน: 78
สถานะ: ผ่าน

สรุป

  • f-string ขึ้นต้นด้วย f แล้วเอาตัวแปรหรือนิพจน์ใส่ใน {}
  • :.2f คุมจำนวนทศนิยม, :, ใส่ตัวคั่นหลักพัน, :.0% แสดงเปอร์เซ็นต์
  • :<, :>, :^ กับตัวเลขความกว้าง ใช้จัดข้อความให้เป็นคอลัมน์
  • ถ้าเลือกได้ ให้ใช้ f-string แทนการต่อสตริงด้วย + เพราะอ่านง่ายกว่าและพลาดยากกว่า

บทถัดไปเจาะลึกเรื่อง string และเมท็อดที่ใช้จัดการข้อความ