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

Python Startswith และ Endswith: คู่มือขั้นตอนต่อขั้นตอน

ฟังก์ชัน startswith() ของ Python ตรวจสอบว่าสตริงเริ่มต้นด้วยซับสตริงที่ระบุหรือไม่ ฟังก์ชัน endswith() ของ Python ตรวจสอบว่าสตริงจบด้วยซับสตริงหรือไม่ ทั้งสองฟังก์ชันคืนค่า True หรือ False


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

ตัวอย่างเช่น หากคุณสร้างโปรแกรมที่เก็บเบอร์โทรศัพท์ของผู้ใช้ คุณอาจต้องการตรวจสอบว่าผู้ใช้ระบุรหัสประเทศไว้หรือไม่ หรืออาจคุณสร้างโปรแกรมที่ตรวจสอบว่าชื่อผู้ใช้จบด้วย e สำหรับโปรโมชั่นพิเศษของอาร์เคดของคุณ

นั่นคือที่มาของฟังก์ชันในตัว startswith() และ endswith() startswith() และ endswith() สามารถใช้เพื่อกำหนดว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงเฉพาะ ตามลำดับ

บทช่วยสอนนี้จะอภิบายวิธีใช้เมธอด startswith() และ endswith() ของ Python เพื่อตรวจสอบว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงเฉพาะ เราจะทำงานผ่านตัวอย่างของแต่ละเมธอดที่ใช้ในโปรแกรม

บทนำสรุป String Index

ก่อนพูดถึง startsWith และ endsWith เราควรใช้เวลาทบทวนความรู้เกี่ยวกับ string index ใน Python

สตริงคือลำดับของตัวอักษร เช่น ตัวเลข ช่องว่าง ตัวอักษร และสัญลักษณ์ คุณสามารถเข้าถึงส่วนต่างๆ ของสตริงได้ในลักษณะเดียวกับที่คุณทำกับลิสต์

ทุกตัวอักษรในสตริงมีค่าดัชนี (index value) ดัชนีคือตำแหน่งที่ตัวอักษรอยู่ในสตริง หมายเลขดัชนีเริ่มต้นที่ 0 ตัวอย่างเช่น นี่คือสตริง Python Substrings พร้อมหมายเลขดัชนี:

Python Substrings
012345678910111213141516

ตัวอักษรแรกในสตริงคือ P มีค่าดัชนี 0 ตัวอักษรสุดท้ายของเรา s มีค่าดัชนี 16 เนื่องจากแต่ละตัวอักษรมีหมายเลขดัชนีของตัวเอง เราจึงสามารถจัดการสตริงตามตำแหน่งของแต่ละตัวอักษรได้

Python Startswith

เมธอดสตริง startswith() ตรวจสอบว่าสตริงเริ่มต้นด้วยซับสตริงเฉพาะหรือไม่ หากสตริงเริ่มต้นด้วยซับสตริงที่ระบุ เมธอด startswith() จะคืนค่า True มิฉะนั้น ฟังก์ชันจะคืนค่า False

นี่คือไวยากรณ์สำหรับเมธอด startswith() ของ Python:

string_name.startswith(substring, start_pos, end_pos)

เมธอด startswith() รับพารามิเตอร์ 3 ตัว ดังนี้:

  • substring คือสตริงที่จะตรวจสอบภายในสตริงที่ใหญ่กว่า (จำเป็น)
  • start_pos คือตำแหน่งดัชนีเริ่มต้นที่การค้นหาซับสตริงควรเริ่มต้น (ตัวเลือก)
  • end_pos คือตำแหน่งดัชนีที่การค้นหาซับสตริงควรสิ้นสุด (ตัวเลือก)

พารามิเตอร์ substring เป็น case sensitive (แยกตัวพิมพ์เล็ก-ใหญ่) ดังนั้น หากคุณค้นหา s ในสตริง มันจะค้นหาเฉพาะตัว s ตัวพิมพ์เล็ก หากคุณต้องการค้นหา S ตัวพิมพ์ใหญ่ คุณจะต้องระบุตัวอักษรนั้น นอกจากนี้ จำได้ว่า ตำแหน่งดัชนีใน Python เริ่มที่ 0 ซึ่งจะส่งผลต่อพารามิเตอร์ start_pos และ end_pos

มาทดลองตัวอย่างเพื่อแสดงให้เห็นเมธอด startswith() ในการทำงาน

สมมติว่าเราเป็นผู้ดำเนินการอาร์เคด และเรากำลังดำเนินโปรโมชั่นพิเศษ ลูกค้าทุกคนที่ชื่อเริ่มต้นด้วย J มีสิทธิ์ได้ตั๋วเพิ่ม 200 ใบ สำหรับทุก 1000 ตั๋วที่พวกเขาชนะที่อาร์เคด เพื่อแลกตั๋วนี้ ลูกค้าต้องสแกนบัตรอาร์เคดที่เคาน์เตอร์ ซึ่งรันโปรแกรมตรวจสอบตัวอักษรแรกของชื่อพวกเขา

นี่คือโค้ดที่เราสามารถใช้เพื่อตรวจสอบว่าตัวอักษรแรกของชื่อลูกค้าเท่ากับ J หรือไม่:

customer_name = "John Milton"
print(customer_name.startswith("J"))

โค้ดของเราคืนค่า: True ในบรรทัดแรกของโค้ด เรากำหนดตัวแปรชื่อ customer_name ที่เก็บชื่อของลูกค้าของเรา จากนั้นเราใช้ startswith() เพื่อตรวจสอบว่าตัวแปร "customer_name" เริ่มต้นด้วย J หรือไม่ ในกรณีนี้ ชื่อลูกค้าของเราเริ่มต้นด้วย J ดังนั้นโปรแกรมของเราคืนค่า True

หากคุณไม่ระบุอาร์กิวเมนต์ start_pos หรือ end_pos startswith() จะค้นหาซับสตริงที่คุณระบุเฉพาะที่ต้นทางของสตริง

ตอนนี้ สมมติว่าเรากำลังเปลี่ยนโปรโมชั่น และเฉพาะคนที่ชื่อมี s ระหว่างตัวอักษรที่ 2 ถึง 5 ของชื่อเต็ม เราสามารถตรวจสอบว่าชื่อเต็มของลูกค้ามี s ระหว่างตัวอักษรที่ 2 ถึง 5 ของชื่อเต็มได้ด้วยโค้ดนี้:

customer_name = "John Milton"
print(customer_name.startswith("s", 1, 5))

โค้ดของเราคืนค่า: False ในโค้ดของเรา เราระบุพารามิเตอร์ start_pos และ end_pos ซึ่งตั้งค่าเป็น 1 และ 5 ตามลำดับ นี่บอก startswith() ให้ค้นหาตัวอักษร s เฉพาะระหว่างตัวอักษรที่ 2 ถึง 5 ในสตริงของเรา (ตัวอักษรที่มีค่าดัชนีระหว่าง 1 และ 5)

Python Endswith

เมธอดจัดรูปแบบสตริง endswith() สามารถใช้ตรวจสอบว่าสตริงจบด้วยค่าเฉพาะหรือไม่ endswith() ทำงานในลักษณะเดียวกับเมธอด startswith() แต่แทนที่จะค้นหาซับสตริงที่ต้นทางของสตริง มันค้นหาที่ปลายทาง

นี่คือไวยากรณ์สำหรับเมธอด endswith():

string_name.endswith(substring, start_pos, end_pos)

นิยามสำหรับพารามิเตอร์เหล่านี้เหมือนกับที่ใช้กับเมธอด startswith()

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

นี่คือตัวอย่างของ endswith() ที่ใช้ตรวจสอบว่าเลข 4 หลักที่ลูกค้าให้ตรงกับในไฟล์หรือไม่:

on_file_credit_card = '4242 4242 4242 4242'
matches = on_file_credit_card.endswith('4242')
print(matches)

โปรแกรมของเราคืนค่า: True ในกรณีนี้ ลูกค้าของเราให้เลข 4242 เราใช้เมธอด endswith() เพื่อตรวจสอบว่าเลขเหล่านั้นตรงกับที่เรามีในไฟล์หรือไม่ ในกรณีนี้ บัตรเครดิตในไฟล์จบด้วย 4242 ดังนั้นโปรแกรมของเราคืนค่า True

เรายังสามารถใช้พารามิเตอร์ start_pos และ end_pos ที่เป็นตัวเลือก เพื่อค้นหาซับสตริงที่ตำแหน่งดัชนีเฉพาะ

สมมติว่าเราดำเนินร้านคาเฟ่ และเรามีสตริงที่เก็บทุกอย่างที่ลูกค้าสั่ง หัวหน้าเชฟต้องการทราบว่าออเดอร์มี Ham Sandwich หรือไม่ และทราบว่าความยาวของสตริงของเราคือ 24 ตัวอักษร 5 ตัวอักษรสุดท้ายของสตริงของเรามี ORDER ดังนั้น เราต้องการข้ามตัวอักษร 5 ตัวแรกในสตริงของเรา

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

order = "ORDER Latte Ham Sandwich"
includes_ham_sandwich = order.endswith("Ham Sandwich", 0, 19)
print(includes_ham_sandwich)

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

ในตัวอย่างของเรา เราระบุ Ham Sandwich เป็นพารามิเตอร์ substring

จากนั้นเราระบุ 0 เป็นพารามิเตอร์ start_pos เพราะเราจะใช้พารามิเตอร์ end_pos และ start_pos ไม่สามารถว่างได้เมื่อเราใช้ end_pos เราระบุ 19 เป็นอาร์กิวเมนต์ end_pos ของเรา เพราะ 5 ตัวอักษรสุดท้ายของสตริงของเราคือ ORDER และตัวอักษรก่อนหน้านั้นคือช่องว่าง

สตริงของเราจบด้วย Ham Sandwich ดังนั้นโปรแกรมของเราคืนค่า True หากสตริงของเราไม่จบด้วย Ham Sandwich suffix จะคืนค่า False

Python Endswith กับ Lists

เพิ่มเติม endswith() สามารถรับลิสต์หรือทูเพิลเป็นอาร์กิวเมนต์ substring ได้ ซึ่งช่วยให้คุณตรวจสอบว่าสตริงจบด้วยสตริงหนึ่งในหลายสตริง สมมติว่าเราสร้างโปรแกรมที่ตรวจสอบว่าชื่อไฟล์จบด้วย .mp3 หรือ .mp4 เราสามารถทำการตรวจสอบนี้ด้วยโค้ดต่อไปนี้:

potential_extensions = ['.mp3', '.mp4']
file_name = 'music.mp3'
print(file_name.endswith(potential_extensions))

โค้ดของเราคืนค่า: True ในตัวอย่างนี้ เราสร้างอาร์เรย์ชื่อ potential_extensions ที่เก็บลิสต์ของนามสกุลไฟล์ จากนั้นเราประกาศตัวแปรชื่อ file_name ที่เก็บชื่อไฟล์ที่เราต้องการตรวจสอบนามสกุล

สุดท้าย เราใช้เมธอด endswith() เพื่อตรวจสอบว่าสตริงของเราจบด้วยนามสกุลใดนามสกุลหนึ่งในลิสต์ potential_extensions ของเรา ในกรณีนี้ ชื่อไฟล์ของเราจบด้วย .mp3 ซึ่งอยู่ในลิสต์ potential_extensions ของเรา ดังนั้นโปรแกรมของเราคืนค่า True

สรุป

เมธอด startswith() และ endswith() สามารถใช้ตรวจสอบว่าสตริง Python เริ่มต้นหรือจบด้วยซับสตริงเฉพาะ ตามลำดับ แต่ละเมธอดมีพารามิเตอร์ตัวเลือกที่ช่วยให้คุณระบุได้ว่าการค้นหาควรเริ่มและสิ้นสุดที่ไหนภายในสตริง

บทช่วยสอนนี้อภิบายวิธีใช้ทั้งเมธอด startswith() และ endswith() และสำรวจตัวอย่างบางส่วนของแต่ละเมธอดในการทำงาน ตอนนี้คุณพร้อมที่จะตรวจสอบว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงโดยใช้เมธอด startswith() และ endswith() อย่างมืออาชีพแล้ว