ปัญหา..
สมมติว่าคุณต้องตรวจสอบจุดเริ่มต้นหรือจุดสิ้นสุดของสตริงสำหรับรูปแบบข้อความเฉพาะ รูปแบบทั่วไปอาจเป็นนามสกุลไฟล์ แต่ก็สามารถเป็นอะไรก็ได้ ฉันจะแสดงวิธีการสองสามวิธีในการทำเช่นนี้
เมธอด 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)) สำหรับชื่อในชื่อไฟล์):<ดำเนินการตรรกะที่นี่>