คู่มือการดาวน์โหลดและติดตั้ง R และ RStudio
ค้นพบวิธีที่เราสามารถดาวน์โหลดและติดตั้ง R และ RStudio ซึ่งเป็นทั้งแบบฟรีและแบบโอเพ่นซอร์สสำหรับการเขียนโปรแกรมสถิติและกราฟิก
การทำงานกับสตริงเป็นงานทั่วไปใน Python คุณมักจะต้องหาว่าสตริงมีสตริงอื่นหรือไม่
วิธีที่ง่ายที่สุดในการตรวจสอบว่าสตริง Python มีสตริงย่อยหรือไม่ รวมถึงตัวดำเนินการ 'in' ฟังก์ชัน find() และเมธอด index() สถานการณ์ที่ซับซ้อนมากขึ้นสามารถแก้ไขได้ด้วยนิพจน์ทั่วไปหรือไลบรารีภายนอกเช่น Pandas
บทความนี้แสดงให้คุณเห็น:
สี่วิธีง่ายๆ
ฟังก์ชัน regex ที่ซับซ้อนอีกสองฟังก์ชัน
วิธีการใช้ห้องสมุด Pandas
คุณจะได้เรียนรู้แต่ละเทคนิคผ่านตัวอย่างไวยากรณ์และการใช้งาน คุณยังจะได้รับคำแนะนำว่าวิธีใดดีที่สุดสำหรับข้อกำหนดต่างๆ
มาเริ่มกันเลย!
สารบัญ
พื้นฐานของ Python Strings
สตริงใน Python คือลำดับของอักขระที่ใช้แทนข้อมูลแบบข้อความ ซึ่งอาจประกอบด้วยตัวอักษร ตัวเลข สัญลักษณ์ และช่องว่าง
เป็นหนึ่งในประเภทข้อมูลในตัวของ Python และสามารถสร้างได้โดยใช้:
อัญประกาศเดี่ยว (' ')
อัญประกาศคู่ (“ “)
อัญประกาศสามตัว (”' ”' หรือ “”” “””)
สตริงได้รับการจัดทำดัชนี ซึ่งหมายความว่าคุณสามารถเข้าถึงอักขระที่ต้องการได้โดยอ้างอิงจากหมายเลขดัชนี ดัชนีเริ่มต้นคือ 0 ซึ่งหมายความว่าอักขระตัวแรกของสตริงมีดัชนีเป็น 0 ตัวที่สองมีดัชนีเป็น 1 เป็นต้น
ต่อไป เราจะพิจารณาวิธีตรวจสอบสตริงย่อย
4 วิธีที่ง่ายที่สุดในการตรวจสอบสตริงย่อย
Python มีหลายวิธีในการตรวจสอบว่ามีสตริงย่อยอยู่ภายในสตริงที่ใหญ่กว่าหรือไม่ บางอย่างซับซ้อนกว่าอย่างอื่น สำหรับการตรวจสอบพื้นฐานที่สุด วิธีที่ง่ายที่สุดคือตัวดำเนินการ in หรือหนึ่งในสามวิธีของสตริง
ในโอเปอเรเตอร์
ค้นหา () วิธีการ
ดัชนี () วิธีการ
วิธีการนับ ()
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. ค้นหาซ้ำ()
ฟังก์ชัน 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
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. ความเร็วของการประมวลผล
'in' 0perator เป็นตัวเลือกที่ดีที่สุดหากคุณต้องการทราบว่ามีสตริงย่อยอยู่ภายในสตริงหรือไม่
ใช้งานง่าย สะดวก และรวดเร็วสำหรับจุดประสงค์นี้ อย่างไรก็ตาม ไม่ได้ให้ข้อมูลเกี่ยวกับตำแหน่งหรือจำนวนของสตริงย่อย
2. ตำแหน่งของสตริงย่อย
ใช้เมธอด .find()หรือ.index()หากคุณต้องการทราบตำแหน่งของสตริงย่อยที่เกิดขึ้นครั้งแรกภายในสตริง
พวกเขาทั้งสองส่งคืนดัชนีของการเกิดขึ้นครั้งแรกของสตริงย่อย
3. จำนวนของสตริงย่อย
ใช้ เมธอด .count()เมื่อต้องการทราบว่าสตริงย่อยเกิดขึ้นในสตริงกี่ครั้ง
4. รูปแบบที่ซับซ้อน
หากคุณต้องการจับคู่รูปแบบที่ซับซ้อนหรือทำการค้นหาโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่นิพจน์ ทั่วไป จะมีความยืดหยุ่นมากที่สุด ฟังก์ชันre.search()สามารถจัดการรูปแบบนอกเหนือจากสตริงย่อยธรรมดา และสามารถค้นหาโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ได้อย่างง่ายดาย
อย่างไรก็ตาม นิพจน์ทั่วไปอาจใช้เวลานานเกินไปสำหรับการตรวจสอบสตริงย่อยอย่างง่าย และยังสามารถใช้และบำรุงรักษาได้ช้ากว่าและซับซ้อนกว่าด้วย
5. ดำเนินการวิเคราะห์ข้อความ
ดูบทความของเราเกี่ยวกับการวิเคราะห์ข้อความใน Pythonซึ่งแสดงวิธีการทำงานกับไลบรารี textblob
คุณสามารถใช้ ฟังก์ชัน .tagsเพื่อตรวจสอบส่วนของคำพูด หรือใช้ ฟังก์ชัน .ngramเพื่อค้นหาคำที่มักปรากฏพร้อมกันในเอกสาร
ความคิดสุดท้าย
คุณได้เรียนรู้เจ็ดวิธีในการตรวจสอบว่ามีคำหรือวัตถุสตริงอยู่ในอีกคำหนึ่งหรือไม่ ซึ่งรวมถึงตัวดำเนินการการเป็นสมาชิก ฟังก์ชันในตัว regex และฟังก์ชัน Pandas
แต่ละวิธีถูกต้องสำหรับบางสถานการณ์ แต่ไม่ใช่สำหรับทั้งหมด ใช้บทความนี้เป็นข้อมูลสรุปเมื่อคุณเชี่ยวชาญภาษาโปรแกรม Python และใช้วิธีแก้ปัญหาที่ดีที่สุดสำหรับงานวิเคราะห์สตริงของคุณ
จำไว้ว่าไม่มีวิธีใดที่เหมาะกับทุกวิธี แต่ละวิธีมีจุดเด่นและลักษณะเฉพาะตัว ดังนั้นอย่าลังเลที่จะเลือกวิธีที่เหมาะกับสไตล์ของคุณหรือปัญหาเฉพาะที่คุณกำลังพยายามแก้ไข ท้ายที่สุดแล้ว Python คือการทำให้ชีวิตของคุณง่ายขึ้น ดังนั้นยอมรับความยืดหยุ่นของมัน!
ค้นพบวิธีที่เราสามารถดาวน์โหลดและติดตั้ง R และ RStudio ซึ่งเป็นทั้งแบบฟรีและแบบโอเพ่นซอร์สสำหรับการเขียนโปรแกรมสถิติและกราฟิก
วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ
Power Automate คืออะไร? - สุดยอดคู่มือที่ช่วยให้คุณเข้าใจและใช้ได้อย่างมีประสิทธิภาพ
วิธีใช้ Power Query ใน Excel: คำแนะนำทั้งหมดเพื่อทำให้ข้อมูลของคุณมีประสิทธิภาพมากขึ้น
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates
ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก
บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ
ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น
ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร