Python ตอนที่ 53 ค้นหาข้อความใน String ด้วยเมธอด find()

เมธอด find() เป็นเมธอดของสตริง ที่ใช้สำหรับค้นหาคำที่ต้องการในสตริง โดยจะคืนค่ากลับมาเป็นตัวเลขบอกตำแหน่งของคำที่ระบุ ที่ปรากฏครั้งแรกในสตริง เช่น ถ้าหาคำว่า Python และมีคำนี้อยู่ในสตริง 2 ครั้ง จะได้ผลลัพธ์เป็นตำแหน่งของคำว่า Python ที่ปรากฏครั้งแรกเท่านั้น

แต่ถ้าไม่มีคำที่ค้นหาอยู่ในสตริง จะคืนค่ากลับมาเป็น -1

รูปแบบการใช้งานเมธอด find() จะเป็นดังนี้

 string.find(value, start, end)    
  • value คือ ค่าที่ต้องการค้นหา
  • start คือ ตำแหน่งแรกที่จะเริ่มค้นหา (จะระบุหรือไม่ก็ได้) ค่าเริ่มต้นเป็น 0
  • end คือ ตำแหน่งสุดท้ายที่จะให้ค้นหา (จะระบุหรือไม่ก็ได้) ค่าเริ่มต้นเป็นตำแหน่งสุดท้ายของตัวอักษรในสตริง

ตัวอย่างการใช้งานเมธอด find()

mytext = "Python Is Great. I Love Python."
x = mytext.find("Love")

print(x)    # x = 19

จากโค้ดตัวอย่าง ผลลัพธ์จะเป็น 19 เพราะตำแหน่งที่ค้นเจอคำว่า Love ครั้งแรก อยู่ที่ตัวอักษรลำดับที่ 19 (นับเริ่มจาก 0) ในสตริง

ตัวอย่างการใช้งานเมธอด find() แบบระบุตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุด

mytext = "Python Is Great. I Love Python."
x = mytext.find("Love", 10, 30)

print(x)    # x = 19

จากโค้ดตัวอย่าง ให้ค้นหาคำว่า Love ในสตริง โดยเริ่มค้นจากตัวอักษรลำดับที่ 10 ไปจนถึงตัวอักษรลำดับที่ 30 (เริ่มนับจาก 0) จะได้ผลลัพธ์ 19 เหมือนในตัวอย่างก่อนหน้านี้ เพราะเวลาคืนค่าผลลัพธ์กลับมาเป็นตำแหน่งของตัวอักษรในสตริง ไพธอนจะนับตำแหน่งเริ่มจากตัวอักษรตัวแรกในสตริง (ไม่ได้เริ่มนับจากตำแหน่งที่เริ่มค้นหา)

ถ้าไม่เจอคำที่ค้นหา จะคืนค่ากลับมาเป็น -1

การใช้งานเมธอด find() ถ้าไม่เจอค่าที่ค้นหาอยู่ในสตริง จะคืนค่ากลับมาเป็น -1 ดังนี้

mytext = "Python Is Great. I Love Python."
x = mytext.find("Is", 10, 30)

print(x)    # x = -1

จากโค้ดตัวอย่าง สั่งให้ค้นหาคำว่า “Is” โดยให้เริ่มค้นหาตั้งแต่ตัวอักษรที่อยู่ในตำแหน่ง 10 ไปจึงถึงตำแหน่ง 30 ทำให้ไม่พบคำว่า “Is” อยู่ในสตริง เพราะคำว่า “Is” อยู่ก่อนตำแหน่งที่ 10 นั่นเอง จึงทำให้ผลลัพธ์เป็น -1