Python ตอนที่ 15 การตัดข้อมูชนิด String ด้วย slice syntax

ในภาษา Python เมื่อเราต้องการตัดเอาข้อความเฉพาะบางส่วนจากตัวแปรที่เก็บข้อมูลประเภท String เราสามารถทำได้โดยการใช้ slice syntax ซึ่งมีรูปแบบการใช้งานดังนี้

string[start:end] 
  • string คือตัวแปรประเภทสตริง
  • start คือ ตัวเลขระบุตำแหน่งตัวอักษรตัวแรกที่ต้องการ โดยให้ระบุเป็นตัวเลขจำนวนเต็ม
  • end คือ ตัวเลขระบุตำแหน่งตัวอักษรตัวสุดท้ายที่ต้องการ โดยให้ระบุเป็นตัวเลขจำนวนเต็ม (ตำแหน่งของอักขระที่ได้จะเป็นตำแหน่งที่ end -1)

หมายเหตุ : อินเด็กซ์ของอักขระในสตริง เริ่มต้นที่ตำแหน่ง 0

str = "Python Is Fantastic"

print(str[0:6])

# Python

จากโค้ดตัวอย่าง หมายถึง ให้ตัดเอาอักขระลำดับที่ 0 ถึงลำดับที่ 6 ลบ 1 คือ 0 1 2 3 4 5 เท่ากับคำว่า Python

ตัดสตริงเริ่มจากตำแหน่งแรกสุด

เราสามารถเว้นการระบุตำแหน่ง start เพื่อให้ตัดสตริงเริ่มจากอินเด็กซ์ลำดับแรก ก็ได้เช่นกัน

str = "Python Is Fantastic"

print(str[:6])

# Python

จากตัวอย่าง ไม่ได้ระบุตำแหน่ง start ไพธอนจะรู้เองว่า ต้องเริ่มตัดสตริงจากตำแหน่งแรก

ตัดสตริงจนถึงลำดับสุดท้าย

ถ้าต้องการตัดสตริงจนถึงลำดับสุดท้าย ก็สามารถเว้นตำแหน่ง end ไว้ เพื่อให้ Python ตัดสตริงจนถึงตำแหน่งสุดท้ายก็ได้เช่นกัน

str = "Python Is Fantastic"

print(str[10:])

# Fantastic

จากตัวอย่าง ระบุเฉพาะตำแหน่ start ไม่ได้ระบุตำแหน่ง end ดังนั้น Python จะตัดสตริงเริ่มจากตำแหน่งที่ระบุจนถึงลำดับสุดท้าย

ถ้าไม่ระบุทั้งตำแหน่ง start และตำแหน่ง end ก็จะได้สตริงต้นฉบับมาทั้งหมด

str = "Python Is Fantastic"

print(str[:])

# Python Is Fantastic

ตัดสตริงมาจากข้างหลัง

ตัวอย่างด้านบนทั้งหมด เป็นการตัดสตริงโดยเริ่มนับจากตำแหน่งแรก (ซ้ายไปขวา) แต่ถ้าเราต้องการตัดสตริงโดยเริ่มนับมาจากด้านหลัง (ขวามาซ้าย) ก็สามารถทำได้เช่นกัน โดยการระบุอินเด็กซ์เป็นตัวเลขติดลบ ดังนี้

str = "Python Is Fantastic"

print(str[-19:-13])

# Python

จากตัวอย่าง ต้องการตัดเอาคำว่า Python โดยให้นับจำนวนอินเด็กซ็มาจากด้านหลัง จึงระบุ start เป็น -19 เพราะเมื่อนับมาจากด้านหลัง ตัว P อยู่ลำดับที่ 19 และระบุตำแหน่ง end เป็น -13 เพราะเมื่อนับมาจากด้านหลัง ตัว n (ของคำว่า Python) อยู่ลำดับที่ 14