0Pricing
Python Academy · บทเรียน

สตริงแม่แบบและ str.format

เครื่องมือจัดรูปแบบอื่น ๆ

สตริงแม่แบบและ str.format เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

เครื่องมือจัดรูปแบบอื่น

นอกจากสตริงแบบ f แล้ว Python ยังมีเครื่องมือจัดรูปแบบอีกสองชนิด ได้แก่ เมธอด str.format() และคลาส string.Template แต่ละชนิดเหมาะกับสถานการณ์ที่แตกต่างกัน

print('Hello, {}!'.format('World'))

พื้นฐานของ str.format

str.format() จะแทนที่ตัวยึดตำแหน่ง {} ด้วยอาร์กิวเมนต์ตามลำดับ ฟังก์ชันนี้มีมาก่อนสตริงแบบ f และยังพบได้ในโค้ดจำนวนมาก

msg = '{} is {} years old'.format('Ada', 36)
print(msg)

ดัชนีตามตำแหน่ง

ใส่ตัวเลขไว้ในวงเล็บปีกกาเพื่อใช้อาร์กิวเมนต์ซ้ำหรือเปลี่ยนลำดับตามตำแหน่ง

print('{0} {1} {0}'.format('echo', 'once'))

ตัวยึดตำแหน่งที่มีชื่อ

ใช้ชื่อภายในวงเล็บปีกกาและส่งอาร์กิวเมนต์แบบคีย์เวิร์ด วิธีนี้ทำให้แม่แบบอธิบายตัวเองได้

print('{name} scored {score}'.format(name='Lin', score=95))

ข้อกำหนดรูปแบบยังคงใช้ได้

ภาษาขนาดเล็กเดียวกันยังใช้หลังเครื่องหมายโคลอนใน str.format ได้ คุณจึงควบคุมความกว้าง ความแม่นยำ และการจัดแนวได้

print('{:.2f}'.format(3.14159))
print('{:>8}'.format('hi'))

การจัดรูปแบบจากพจนานุกรม

แยกข้อมูลจากพจนานุกรมเข้า str.format ด้วย ** เพื่อเติมค่าลงในตัวยึดตำแหน่งที่มีชื่อ

data = {'city': 'Rome', 'temp': 27}
print('{city}: {temp} C'.format(**data))

แนะนำสตริงแบบแม่แบบ

string.Template ใช้ตัวยึดตำแหน่งที่มี $ เป็นพื้นฐาน โดยตั้งใจออกแบบให้เรียบง่ายและปลอดภัยกว่าสำหรับแม่แบบที่ผู้ใช้จัดเตรียม เพราะไม่สามารถเรียกใช้นิพจน์ใด ๆ ตามอำเภอใจได้

from string import Template
t = Template('Hello, $name!')
print(t.substitute(name='World'))

วงเล็บปีกกาเพื่อความชัดเจน

ครอบชื่อของตัวยึดตำแหน่งด้วยวงเล็บปีกกา เช่น ${name} เมื่อชื่อนั้นอยู่ติดกับข้อความอื่น

from string import Template
t = Template('${item}s cost $$5')
print(t.substitute(item='apple'))

safe_substitute

substitute จะส่งข้อผิดพลาด KeyError เมื่อไม่พบชื่อ ส่วน safe_substitute จะปล่อยตัวยึดตำแหน่งที่ไม่รู้จักไว้เหมือนเดิมแทน

from string import Template
t = Template('$greeting, $name')
print(t.safe_substitute(greeting='Hi'))

ควรใช้แบบใดเมื่อใด

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

name = 'Sam'
print(f'f-string: {name}')
print('format: {}'.format(name))

แม่แบบจากข้อความภายนอก

เนื่องจากข้อความของแม่แบบเป็นเพียงสตริง คุณจึงโหลดข้อความนั้นจากไฟล์การตั้งค่าหรือฐานข้อมูล แล้วแทนค่าขณะทำงานได้

from string import Template
stored = 'Order $id ships to $city'
t = Template(stored)
print(t.substitute(id=7, city='Oslo'))

ตรวจสอบความเข้าใจ

เครื่องมือใดปลอดภัยที่สุดสำหรับการแทนค่าลงในแม่แบบที่ผู้ใช้ไม่น่าเชื่อถือเป็นผู้จัดเตรียม

สรุปทบทวน: สตริงแม่แบบและ str.format

สรุปทางเลือกอื่นนอกจากสตริงแบบ f:

  • str.format() ใช้ช่องแทนค่า {} โดยรองรับอาร์กิวเมนต์ตามตำแหน่ง ตามชื่อ และข้อกำหนดรูปแบบทั้งหมด
  • string.Template ใช้ช่องแทนค่า $name และปลอดภัยสำหรับข้อมูลนำเข้าที่ไม่น่าเชื่อถือ
  • safe_substitute จะคงช่องแทนค่าที่ไม่รู้จักไว้ที่เดิม
  • ควรใช้สตริงแบบ f สำหรับโค้ดทั่วไป และใช้เครื่องมือเหล่านี้เมื่อแม่แบบมาจากภายนอกหรือไม่น่าเชื่อถือ
from string import Template
print(Template('Bye, $who').substitute(who='all'))
print('Done: {}'.format(True))

คำถามที่พบบ่อย

บทเรียน “สตริงแม่แบบและ str.format” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สตริงแม่แบบและ str.format” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สตริงแม่แบบและ str.format”

เครื่องมือจัดรูปแบบอื่น ๆ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “สตริงแม่แบบและ str.format” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นิพจน์ f-string
  2. ตัวระบุรูปแบบ
  3. ภาษาขนาดเล็กสำหรับการจัดรูปแบบ
  4. สตริงแม่แบบและ str.format
← กลับไปที่ Python Academy