7 วิธีในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่

การทำงานกับสตริงเป็นงานทั่วไปใน Python คุณมักจะต้องหาว่าสตริงมีสตริงอื่นหรือไม่

วิธีที่ง่ายที่สุดในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่ รวมถึงตัวดำเนินการ 'in' ฟังก์ชัน find() และเมธอด index() สถานการณ์ที่ซับซ้อนมากขึ้นสามารถแก้ไขได้ด้วยนิพจน์ทั่วไปหรือไลบรารีภายนอกเช่น Pandas

บทความนี้แสดงให้คุณเห็น:

  • สี่วิธีง่ายๆ

  • ฟังก์ชัน regex ที่ซับซ้อนอีกสองฟังก์ชัน

  • วิธีการใช้ห้องสมุด Pandas

คุณจะได้เรียนรู้แต่ละเทคนิคผ่านตัวอย่างไวยากรณ์และการใช้งาน คุณยังจะได้รับคำแนะนำว่าวิธีใดดีที่สุดสำหรับข้อกำหนดต่างๆ

มาเริ่มกันเลย!

สารบัญ

พื้นฐานของ Python Strings

สตริงใน Python คือลำดับของอักขระที่ใช้แทนข้อมูลแบบข้อความ ซึ่งอาจประกอบด้วยตัวอักษร ตัวเลข สัญลักษณ์ และช่องว่าง

เป็นหนึ่งในประเภทข้อมูลในตัวของ Python และสามารถสร้างได้โดยใช้:

  • อัญประกาศเดี่ยว (' ')

  • อัญประกาศคู่ (“ “)

  • อัญประกาศสามตัว (”' ”' หรือ “”” “””)

สตริงได้รับการจัดทำดัชนี ซึ่งหมายความว่าคุณสามารถเข้าถึงอักขระที่ต้องการได้โดยอ้างอิงจากหมายเลขดัชนี ดัชนีเริ่มต้นคือ 0 ซึ่งหมายความว่าอักขระตัวแรกของสตริงมีดัชนีเป็น 0 ตัวที่สองมีดัชนีเป็น 1 เป็นต้น

ต่อไป เราจะพิจารณาวิธีตรวจสอบสตริงย่อย

4 วิธีที่ง่ายที่สุดในการตรวจสอบสตริงย่อย

Python มีหลายวิธีในการตรวจสอบว่ามีสตริงย่อยอยู่ภายในสตริงที่ใหญ่กว่าหรือไม่ บางอย่างซับซ้อนกว่าอย่างอื่น สำหรับการตรวจสอบพื้นฐานที่สุด วิธีที่ง่ายที่สุดคือตัวดำเนินการ in หรือหนึ่งในสามวิธีของสตริง

  1. ในโอเปอเรเตอร์

  2. ค้นหา () วิธีการ

  3. ดัชนี () วิธีการ

  4. วิธีการนับ ()

7 วิธีในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่

1. ในโอเปอเรเตอร์

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

  • เป็นจริงหากพบสตริงย่อยภายในสตริงหลัก

  • เท็จถ้าไม่ใช่

นี่คือโค้ดตัวอย่างบางส่วน:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

ตัวดำเนินการ 'in' คำนึงถึงขนาดตัวพิมพ์ ซึ่งหมายความว่าจะถือว่าอักขระตัวพิมพ์เล็กและตัวพิมพ์ใหญ่แตกต่างกัน โค้ดด้านบนจะไม่พบสตริงย่อย “hello” ดังนั้นโอเปอเรเตอร์จึงส่งกลับค่าเท็จ

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

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

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

2. ค้นหา () วิธีการ

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

คุณเรียกใช้เมธอดfind()ในสตริงsโดยส่ง substring subเป็นอาร์กิวเมนต์ นี่คือตัวอย่าง:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

คุณสามารถเลือกระบุดัชนีเริ่มต้นหรือสิ้นสุดเพื่อจำกัดการค้นหาของคุณ ข้อเสียของวิธีนี้คือหยุดเมื่อเกิดขึ้นครั้งแรก

3. วิธีดัชนี ()

เมธอดindex()ค่อนข้างคล้ายกับ เมธอด find()ยกเว้นว่าจะเพิ่ม ValueError เมื่อไม่พบสตริงย่อย ซึ่งหมายความว่าคุณควรปิดการโทรในส่วนลอง/ยกเว้น

หากต้องการใช้ เมธอด index()ให้เรียกมันด้วยสตริงsและส่งซับสตริงย่อยเป็นอาร์กิวเมนต์

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

วิธีนี้จะหยุดที่สตริงย่อยแรกภายในข้อความด้วย

4. วิธีการนับ ()

เมธอด.count()จะนับจำนวนครั้งที่สตริงย่อยเกิดขึ้นในสตริงเดิม จะส่งกลับจำนวนเต็มแทนการนับนี้ หากไม่พบสตริงย่อยในสตริงหลัก จะส่งกลับ 0

นี่คือตัวอย่างง่ายๆ ที่มองหาตัวอักษร "o" ในข้อความ "Hello, world!":

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

2 วิธีในการจับคู่สตริงกับนิพจน์ทั่วไป

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

วิธีที่ง่ายที่สุดสองวิธีใน โมดูล reคือ:

  1. ค้นหา()

  2. ค้นหาทั้งหมด ()

7 วิธีในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่

1. ค้นหาซ้ำ()

ฟังก์ชัน search ()ใน โมดูล reจะค้นหารูปแบบในสตริงที่กำหนดและส่งคืนวัตถุที่ตรงกันหากพบการจับคู่ มิฉะนั้นจะส่งกลับNone

ตามค่าเริ่มต้น ฟังก์ชันจะคำนึงถึงขนาดตัวพิมพ์ คุณสามารถใช้ แฟล็ก re.IgnoreCaseเพื่อหลีกเลี่ยงความละเอียดอ่อนของตัวพิมพ์

ต่อไปนี้คือตัวอย่างง่ายๆ ที่ใช้คำสั่งเงื่อนไขโดยขึ้นอยู่กับว่าพบสตริงหรือไม่:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

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

2. re.Findall()

เมธอดนี้จะค้นหารูปแบบการค้นหาที่เกิดขึ้นทั้งหมดในสตริงที่กำหนด และส่งคืนรายการที่มีรายการที่ตรงกันทั้งหมด

ตัวอย่างนี้ใช้รูปแบบที่ตรงกับตัวเลขมากกว่าหนึ่งหลักในสตริง สตริงข้อความ “123, 456, 789” ประกอบด้วยตัวเลขสามลำดับ

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

นี่คือคำตอบจากโค้ดตัวอย่าง: ['123', '456', '789']

วิธีค้นหาสตริงย่อยด้วย Pandas

7 วิธีในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่

Pandas เป็นไลบรารีการวิเคราะห์และจัดการข้อมูลแบบโอเพ่นซอร์สยอดนิยมสำหรับ Python มีโครงสร้างข้อมูลและฟังก์ชันที่จำเป็นในการจัดการและวิเคราะห์ข้อมูลที่มีโครงสร้าง

หนึ่งในโครงสร้างข้อมูลหลักที่Pandas จัดเตรียมไว้ให้ คือ DataFrame คุณสามารถใช้โครงส��้างข้อมูลอเนกประสงค์นี้เพื่อตรวจสอบสตริงหนึ่งภายในอีกสตริงหนึ่ง

ข้อได้เปรียบของ Pandas คือมีแพ็คเกจของโค้ดที่คุณจะต้องเขียนอย่างครอบคลุมในภาษาโปรแกรมอื่นๆ โดยเฉพาะอย่างยิ่ง พลังงานจำนวนมากบรรจุอยู่ภายในฟังก์ชันการบรรจุ

str.contains() ฟังก์ชันใน Pandas

เมธอดstr.contains()ทดสอบว่ารูปแบบหรือนิพจน์ทั่วไปมีอยู่ภายในสตริงของคอลัมน์ DataFrame หรือไม่

นี่คือตัวอย่างที่นำเข้าไลบรารีและค้นหาสตริงภายในรายการสตริง:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

ในตัวอย่างนี้ เราค้นหาสตริงย่อย 'an' ในคอลัมน์ 'ผลไม้' และกรอง DataFrame ตามนั้น ผลลัพธ์จะเป็น:

  • 1 กล้วย

  • 4 ส้ม

หากคุณกำลังมองหาตัวอย่างเพิ่มเติมเกี่ยวกับสิ่งที่ Pandas สามารถทำได้ โปรดดูวิดีโอนี้:

เคล็ดลับในการเลือกวิธีการเฉพาะใน Python

การเลือกวิธีการขึ้นอยู่กับข้อกำหนดเฉพาะของงานของคุณเป็นสำคัญ

ต่อไปนี้คือเหตุผล 4 ประการในการเลือกวิธีใดวิธีหนึ่งที่คุณได้เรียนรู้จากบทความนี้ รวมถึงวิธีโบนัสอีก 1 วิธีที่คุณจะได้เรียนรู้ที่อื่นในบล็อกนี้:

  1. ความเร็วของการประมวลผล

  2. คุณต้องทราบตำแหน่งของสตริงย่อย

  3. คุณต้องทราบจำนวนครั้งของสตริงย่อย

  4. คุณต้องการจับคู่รูปแบบที่ซับซ้อน

  5. ทำการวิเคราะห์ข้อความ

1. ความเร็วของการประมวลผล

7 วิธีในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่

'in' 0perator เป็นตัวเลือกที่ดีที่สุดหากคุณต้องการทราบว่ามีสตริงย่อยอยู่ภายในสตริงหรือไม่

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

2. ตำแหน่งของสตริงย่อย

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

พวกเขาทั้งสองส่งคืนดัชนีของการเกิดขึ้นครั้งแรกของสตริงย่อย

3. จำนวนของสตริงย่อย

ใช้ เมธอด .count()เมื่อต้องการทราบว่าสตริงย่อยเกิดขึ้นในสตริงกี่ครั้ง

4. รูปแบบที่ซับซ้อน

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

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

5. ดำเนินการวิเคราะห์ข้อความ

ดูบทความของเราเกี่ยวกับการวิเคราะห์ข้อความใน Pythonซึ่งแสดงวิธีการทำงานกับไลบรารี textblob

คุณสามารถใช้ ฟังก์ชัน .tagsเพื่อตรวจสอบส่วนของคำพูด หรือใช้ ฟังก์ชัน .ngramเพื่อค้นหาคำที่มักปรากฏพร้อมกันในเอกสาร

ความคิดสุดท้าย

คุณได้เรียนรู้เจ็ดวิธีในการตรวจสอบว่ามีคำหรือวัตถุสตริงอยู่ในอีกคำหนึ่งหรือไม่ ซึ่งรวมถึงตัวดำเนินการการเป็นสมาชิก ฟังก์ชันในตัว regex และฟังก์ชัน Pandas

แต่ละวิธีถูกต้องสำหรับบางสถานการณ์ แต่ไม่ใช่สำหรับทั้งหมด ใช้บทความนี้เป็นข้อมูลสรุปเมื่อคุณเชี่ยวชาญภาษาโปรแกรม Python และใช้วิธีแก้ปัญหาที่ดีที่สุดสำหรับงานวิเคราะห์สตริงของคุณ

จำไว้ว่าไม่มีวิธีใดที่เหมาะกับทุกวิธี แต่ละวิธีมีจุดเด่นและลักษณะเฉพาะตัว ดังนั้นอย่าลังเลที่จะเลือกวิธีที่เหมาะกับสไตล์ของคุณหรือปัญหาเฉพาะที่คุณกำลังพยายามแก้ไข ท้ายที่สุดแล้ว Python คือการทำให้ชีวิตของคุณง่ายขึ้น ดังนั้นยอมรับความยืดหยุ่นของมัน!

Leave a Comment

คู่มือการดาวน์โหลดและติดตั้ง R และ RStudio

คู่มือการดาวน์โหลดและติดตั้ง R และ RStudio

ค้นพบวิธีที่เราสามารถดาวน์โหลดและติดตั้ง R และ RStudio ซึ่งเป็นทั้งแบบฟรีและแบบโอเพ่นซอร์สสำหรับการเขียนโปรแกรมสถิติและกราฟิก

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

Power Automate คืออะไร? - สุดยอดคู่มือ

Power Automate คืออะไร? - สุดยอดคู่มือ

Power Automate คืออะไร? - สุดยอดคู่มือที่ช่วยให้คุณเข้าใจและใช้ได้อย่างมีประสิทธิภาพ

วิธีใช้ Power Query ใน Excel: คู่มือฉบับสมบูรณ์

วิธีใช้ Power Query ใน Excel: คู่มือฉบับสมบูรณ์

วิธีใช้ Power Query ใน Excel: คำแนะนำทั้งหมดเพื่อทำให้ข้อมูลของคุณมีประสิทธิภาพมากขึ้น

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

วิธีบันทึกและโหลดไฟล์ RDS ใน R

วิธีบันทึกและโหลดไฟล์ RDS ใน R

คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ

บทนำในการกรองบริบทใน LuckyTemplates

บทนำในการกรองบริบทใน LuckyTemplates

ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร