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 และเมท็อดที่ใช้จัดการข้อความ