समस्या..
मान लें कि आपको किसी विशिष्ट टेक्स्ट पैटर्न के लिए स्ट्रिंग के प्रारंभ या अंत की जांच करने की आवश्यकता है। सामान्य पैटर्न फ़ाइल नाम एक्सटेंशन हो सकते हैं लेकिन कुछ भी हो सकते हैं। मैं आपको कुछ तरीके दिखाऊंगा कि आप यह कैसे कर सकते हैं।
Startwith()विधि
एक स्ट्रिंग की शुरुआत की जांच करने का एक आसान तरीका startwith() विधि का उपयोग करना है।
उदाहरण
text = "Is USA colder than Australia?" print(f"output \n {text.startswith('Is')}")
आउटपुट
True
उदाहरण
filename = "Hello_world.txt" print(f"output \n {filename.startswith('Hello')}")
आउटपुट
True
उदाहरण
site_url = 'https://www.something.com' print(f"output \n {site_url.startswith('http:')}")
आउटपुट
False
उदाहरण
print(f"output \n {site_url.startswith('https:')}")
आउटपुट
True
समाप्त होता है() विधि।
एक स्ट्रिंग के अंत की जांच करने का एक आसान तरीका है endwith() विधि का उपयोग करना।
आउटपुट
text = "Is USA colder than Australia?" print(f"output \n {text.endswith('?')}")
आउटपुट
True
उदाहरण
filename = "Hello_world.txt" print(f"output \n {filename.endswith('.txt')}")
आउटपुट
True
अब अगर हम उपरोक्त विधियों के साथ कई विकल्पों की जांच करना चाहते हैं तो हमें टुपल्स प्रदान करने की आवश्यकता है। सामान्य उपयोगों में से एक फ़ाइल एक्सटेंशन की जांच है, मान लें कि हमें निर्देशिका में ".txt" और ".csv" फ़ाइलों के लिए सत्यापन करने की आवश्यकता है।
import os filenames = os.listdir('.')
# Let us first check if there are files print(f"output \n {any(name.endswith(('.csv',',txt')) for name in filenames)}")
आउटपुट
True
आउटपुट
[name 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']
याद रखें कि ये तरीके टुपल्स को स्वीकार करते हैं, अगर आपके पास खोज करने के लिए विकल्पों की एक सूची है, तो हमें उन्हें टुपल्स में बदलने की जरूरत है।
import os # list with choices patters = ['.csv','.txt'] # get the file names filenames = os.listdir('.') # Let us first check if there are files any(name.endswith(patters) for name in filenames)
आउटपुट
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in 8 9 # Let us first check if there are files ---> 10 any(name.endswith(patters) for name in filenames) in (.0) 8 9 # Let us first check if there are files ---> 10 any(name.endswith(patters) for name in filenames) TypeError: endswith first arg must be str or a tuple of str, not list
उपरोक्त कमांड ने एक त्रुटि दी है, इसलिए हमें सूची को टपल में बदलने की आवश्यकता है।
उदाहरण
# Let us first check if there are files any(name.endswith(tuple(patters)) for name in filenames)
आउटपुट
True
इसी तरह, हमें फ़ाइल नाम प्राप्त करने के लिए सूची को टपल में बदलने की आवश्यकता है।
उदाहरण
[name for name in filenames 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']
अंत में, स्टार्टविथ () और एंडविथ () विधियाँ अन्य ऑपरेशनों के साथ संयुक्त होने पर अच्छी लगती हैं, जैसे कि सामान्य डेटा कटौती। उदाहरण के लिए:
उदाहरण
if any(name.endswith(tuple(patters)) for name in filenames): <perform the logic here>