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

จะจับคู่ข้อความที่จุดเริ่มต้นหรือจุดสิ้นสุดของสตริงใน Python ได้อย่างไร


ปัญหา..

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

เมธอด Startswith()

วิธีง่ายๆ ในการตรวจสอบจุดเริ่มต้นของสตริงคือใช้เมธอด startwith()

ตัวอย่าง

text ="สหรัฐอเมริกาหนาวกว่าออสเตรเลียหรือไม่"print(f"output \n {text.startswith('Is')}")

ผลลัพธ์

จริง

ตัวอย่าง

ชื่อไฟล์ ="Hello_world.txt"print(f"output \n {filename.startswith('Hello')}")

ผลลัพธ์

จริง

ตัวอย่าง

site_url ='https://www.something.com'print(f"output \n {site_url.startswith('http:')}")

ผลลัพธ์

เท็จ

ตัวอย่าง

print(f"output \n {site_url.startswith('https:')}")

ผลลัพธ์

จริง

ลงท้ายด้วย() วิธีการ

วิธีง่ายๆ ในการตรวจสอบจุดสิ้นสุดของสตริงคือใช้เมธอด endwith()

ผลลัพธ์

text ="สหรัฐอเมริกาหนาวกว่าออสเตรเลียหรือไม่"print(f"output \n {text.endswith('?')}")

ผลลัพธ์

จริง

ตัวอย่าง

ชื่อไฟล์ ="Hello_world.txt"print(f"output \n {filename.endswith('.txt')}")

ผลลัพธ์

จริง

ตอนนี้ ถ้าเราต้องการตรวจสอบหลายตัวเลือกด้วยวิธีการข้างต้น เราจำเป็นต้องจัดเตรียมสิ่งอันดับ การใช้งานทั่วไปอย่างหนึ่งคือการตรวจสอบนามสกุลไฟล์ ให้เราบอกว่าเราต้องตรวจสอบไฟล์ ".txt" และ ".csv" ในไดเร็กทอรี

นำเข้า osfilenames =os.listdir('.')
# ให้เราตรวจสอบก่อนว่ามี filesprint(f"output \n {any(name.endswith(('.csv',',txt')) for name in filenames)}")

ผลลัพธ์

จริง

ผลลัพธ์

[ชื่อสำหรับชื่อในชื่อไฟล์ if name.endswith(('.csv', '.txt')) ]

ผลลัพธ์

['file1.csv','HRDataset.csv','Input.csv','input.txt','input_copy.txt','movies_data.csv','my_html_data_to_csv.csv','temporary_file1_for_zip.csv ','temporary_file2_for_zip.csv','test.csv','test1.txt','test2.txt','tmdb_5000_movies.csv']

โปรดจำไว้ว่าวิธีการเหล่านี้ยอมรับ tuples หากคุณมีรายการตัวเลือกเพื่อค้นหา เราต้องแปลงเป็น tuples

import os# list with optionspatters =['.csv','.txt']# get the file namesfilenames =os.listdir('.')# ให้เราตรวจสอบก่อนว่ามีไฟล์หรือไม่ (name.endswith(patters) ) สำหรับชื่อในชื่อไฟล์)

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- TypeError Traceback (การโทรล่าสุดล่าสุด) ใน 89 # ให้เราตรวจสอบก่อนว่ามีไฟล์หรือไม่---> 10 ใดๆ (name.endswith(patters) สำหรับชื่อในชื่อไฟล์) ใน (.0)89 # ให้เราตรวจสอบก่อนว่ามีไฟล์หรือไม่ ---> 10 ใดๆ (name.endswith(patters) สำหรับชื่อในชื่อไฟล์) TypeError:ลงท้ายด้วย หาเรื่องแรกต้องเป็น str หรือทูเพิลของ str ไม่ใช่รายการ

คำสั่งด้านบนแสดงข้อผิดพลาด เราจึงต้องแปลงรายการเป็นทูเพิล

ตัวอย่าง

# ให้เราตรวจสอบก่อนว่ามีไฟล์ใดบ้าง (name.endswith(tuple(patters)) สำหรับชื่อในชื่อไฟล์)

ผลลัพธ์

จริง

ในทำนองเดียวกัน เราต้องแปลงรายการเป็นทูเพิลเพื่อให้ได้ชื่อไฟล์

ตัวอย่าง

[ชื่อสำหรับชื่อในชื่อไฟล์ if name.endswith(tuple(patters)) ]

ผลลัพธ์

['file1.csv','HRDataset.csv','Input.csv','input.txt','input_copy.txt','movies_data.csv','my_html_data_to_csv.csv','temporary_file1_for_zip.csv ','temporary_file2_for_zip.csv','test.csv','test1.txt','test2.txt','tmdb_5000_movies.csv']

สุดท้าย เมธอด startwith() และ endwith() จะดูดีเมื่อรวมกับการดำเนินการอื่นๆ เช่น การลดข้อมูลทั่วไป ตัวอย่างเช่น:

ตัวอย่าง

ถ้ามี(name.endswith(tuple(patters)) สำหรับชื่อในชื่อไฟล์):<ดำเนินการตรรกะที่นี่>