Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Find: คู่มือการค้นหาสตริง

เมธอด Python find() ค้นหาตำแหน่งดัชนีที่ตัวแรกของสตริงปรากฏในอีกสตริงหนึ่ง find() คืนค่า -1 หากไม่พบค่า มิฉะนั้น มันคืนค่าตำแหน่งดัชนีเริ่มต้นของค่าที่คุณกำลังค้นหา

การหาสตริงย่อย (substring) ในสตริงเป็นการดำเนินการที่พบบ่อยใน Python ตัวอย่างเช่น สมมติว่าคุณมีสตริงที่มีรายการชื่อหนังสือโปรดของคุณ คุณอาจต้องการหาหนังสือเล่มหนึ่งในรายการนั้น และคืนค่าตำแหน่งที่หนังสือเล่มนั้นปรากฏในรายการ

นี่คือที่มาของเมธอด find() ของสตริง Python เมธอด find() ช่วยให้คุณค้นหาสตริงย่อยใน Python เมธอดนี้คืนค่าตำแหน่งดัชนีของการเกิดครั้งแรกของสตริงย่อยนั้นในสตริง

บทช่วยสอนนี้จะอภิปราย พร้อมตัวอย่าง พื้นฐานของการจัดทำดัชนีสตริงใน Python เราจะใช้เมธอด Python find() เพื่อหาสตริงย่อยภายในสตริงที่ใหญ่กว่า

Python Indexing: ทบทวน (Python Indexing: A Refresher)

สตริง Python เป็นลำดับที่มีอักขระเดี่ยวหนึ่งหรือมากกว่า สตริงสามารถมีตัวอักษร ช่องว่าง สัญลักษณ์ หรือตัวเลข

พิจารณาสตริงต่อไปนี้:

company = "Career Karma"

สตริงนี้ประกอบด้วย 12 อักขระ แต่ละอันมีตำแหน่งของตัวเองในสตริง นี่คือการแบ่งดัชนีสำหรับสตริงนี้:

Career Karma
01234567891011

เมธอด Python find() (Python find() Method)

เมธอด Python find() หาครั้งแรกที่สตริงเฉพาะปรากฏในอีกสตริงหนึ่ง หากไม่พบค่า เมธอด find() จะคืนค่า -1 find() คล้ายกับเมธอด index() ของ Python แตกต่างกันที่ index() โยนข้อยกเว้นหากไม่พบค่า

ไวยากรณ์สำหรับเมธอด find() มีดังนี้:

string_name.find(string_to_find, start, end)

เมธอด find() ยอมรับสามพารามิเตอร์:

  • string_to_find: สตริงย่อยที่คุณต้องการหาตำแหน่งดัชนีเริ่มต้นในสตริง (จำเป็น)
  • start: ตำแหน่งดัชนีที่การค้นหาควรเริ่มต้น ค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ 0 (ทางเลือก)
  • end: ตำแหน่งดัชนีที่การค้นหาควรสิ้นสุด (ทางเลือก)

เมธอด find() คืนค่าดัชนีต่ำสุดที่การเกิดครั้งแรกของสตริงเริ่มต้น หากสตริงย่อยที่คุณค้นหาไม่สามารถพบได้ภายในสตริง ค่า -1 จะถูกคืนค่า

คุณสามารถใช้คำสั่ง if ของ Python เพื่อประเมินว่ามีการคืนค่า -1 หรือไม่ นี่จะช่วยคุณจัดการปัญหาที่เกิดขึ้นหากไม่พบค่าที่คุณกำลังค้นหา

ตอนนี้เรารู้ไวยากรณ์สำหรับเมธอด find() มาสำรวจตัวอย่างที่แสดงเมธอดนี้ถูกใช้งาน

ตัวอย่าง Python Find (Python Find Examples)

ตัวอย่าง Python find(): ค้นหาสตริง (Find a String)

สมมติว่าเรามีสตริงที่มีรายการรสไอศกรีมขายดีที่ร้านไอศกรีมท้องถิ่น

สตริงนี้ปรากฏดังนี้:

flavors = "Vanilla, Buttered Pecan, Cookies and Cream, Chocolate, Choc Chip, Strawberry"

ข้อมูลของเราถูกจัดรูปแบบเป็นสตริง (แสดงโดยเครื่องหมายอ้างอิง)

สมมติว่าเราต้องการหาว่ารายการ "Cookies and Cream" ปรากฏที่ไหนในสตริงของเรา เราสนใจเรียนรู้เพิ่มเติมเกี่ยวกับว่ารส Cookies and Cream นิยมแค่ไหน เพื่อทำเช่นนั้น เราสามารถใช้ฟังก์ชันในตัว find() นี่คือโค้ดที่เราจะใช้เพื่อหารายการนี้ในสตริงของเรา:

flavors = "Vanilla, Buttered Pecan, Cookies and Cream, Chocolate, Choc Chip, Strawberry"
cookies_and_cream = flavors.find("Cookies and Cream")
print(cookies_and_cream)

โค้ดของเราคืนค่า: 25.

ก่อนอื่น เราประกาศตัวแปร Python ชื่อ "flavors" ตัวแปรนี้จัดเก็บรายการรสไอศกรีมที่นิยมที่สุดที่ขายที่ร้านไอศกรีมท้องถิ่น

ต่อไป เราใช้เมธอด find() เพื่อหาคำว่า "Cookies and Cream" ในรายการของเรา และกำหนดค่าที่คืนโดยเมธอด find() ให้กับตัวแปร "cookies_and_cream."

โค้ดของเราคืนค่าค่า 25 ซึ่งหมายความว่า "Cookies and Cream" เริ่มต้นที่ตำแหน่งดัชนี 25 ในรายการของเรา

ตัวอย่าง Python find(): เริ่มค้นหาที่ดัชนีเฉพาะ (Start a Search at a Particular Index)

ตอนนี้ สมมติว่าเราต้องการตรวจสอบว่า "Choc Chip" ปรากฏหลัง "Cookies and Cream" ในรายการของเราหรือไม่ เรารู้ว่า "Cookies and Cream" เริ่มต้นที่ตำแหน่งดัชนี 25 ดังนั้นเราต้องการค้นหา "Choc Chip" หลังจากตำแหน่งดัชนีนั้น

เราสามารถทำได้โดยใช้โค้ดต่อไปนี้:

flavors = "Vanilla, Buttered Pecan, Cookies and Cream, Chocolate, Choc Chip, Strawberry"
choc_chip = flavors.find("Choc Chip", 25)
print(choc_chip)

โค้ดของเราคืนค่า: 55 เราใช้ find() เพื่อหา "Choc Chip" ในสตริง "flavors" ของเรา เราระบุพารามิเตอร์หนึ่ง 25 ซึ่งระบุว่าการค้นหาของเราควรเริ่มต้นที่ไหนในสตริง

เนื่องจาก "Choc Chip" ปรากฏหลัง "Cookies and Cream" ค่าบวกจึงถูกคืนค่า ค่านี้คือตำแหน่งดัชนีที่ "Choc Chip" ปรากฏในรายการ

ตัวอย่าง Python find(): ค้นหาระหว่างช่วงเฉพาะ (Search Between a Particular Range)

ตอนนี้ สมมติว่าเราต้องการค้นหาว่า "Buttered Pecan" ปรากฏก่อน "Cookies and Cream" หรือไม่ เรารู้ว่า "Cookies and Cream" เริ่มต้นที่ตำแหน่งดัชนี 25 ดังนั้นเราไม่ต้องการค้นหา "Buttered Pecan" หลังจุดนั้น เพื่อดำเนินการค้นหานี้ เราสามารถใช้โค้ดต่อไปนี้:

flavors = "Vanilla, Buttered Pecan, Cookies and Cream, Chocolate, Choc Chip, Strawberry"
buttered_pecan = flavors.find("Buttered Pecan", 0, 25)
print(buttered_pecan)

โค้ดของเราคืนค่า: 9 ในตัวอย่างนี้ เราใช้ find() เพื่อหา "Buttered Pecan" ในสตริงของเรา เราระบุ 0 เป็นตำแหน่งที่การค้นหาควรเริ่มต้น และ 25 เป็นตำแหน่งที่การค้นหาควรสิ้นสุด

เนื่องจาก "Buttered Pecan" ปรากฏก่อน "Cookies and Cream" ค่าบวกจึงถูกคืนค่าพร้อมตำแหน่งดัชนีของ "Buttered Pecan" ในสตริงของเรา

Python find() vs. Python index()

ทั้งเมธอด Python find() และ Python index() คืนค่าตำแหน่งดัชนีของค่าในสตริง

ไม่เหมือน index(), find() ไม่คืนค่าข้อยกเว้นหากไม่พบค่า แทนที่จะ เมธอด find() คืนค่า -1 นี่หมายความว่าคุณสามารถประมวลผลสิ่งที่เกิดขึ้นหากไม่พบค่าที่คุณกำลังค้นหาโดยไม่ต้องจัดการข้อผิดพลาด

สรุป

เมธอด Python find() ช่วยให้คุณหาสตริงย่อยภายในสตริง มันคล้ายกับเมธอด index() แต่เมธอด index() โยนข้อยกเว้นหากไม่พบค่า find() คืนค่า -1 หากไม่พบค่า

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

สำหรับคำแนะนำเกี่ยวกับทรัพยากรและหลักสูตรเรียนรู้ Python อันดับหนึ่ง โปรดดูคู่มือ How to Learn Python ของเรา