एक स्ट्रिंग में एक सबस्ट्रिंग की एन-वें घटना का पता लगाना
एक सबस्ट्रिंग की एन-वें घटना के अनुरूप सूचकांक की पहचान करना है एक कार्य जो अक्सर विभिन्न प्रोग्रामिंग परिदृश्यों में उत्पन्न होता है। पायथन में, इस उद्देश्य के लिए विशेष रूप से डिज़ाइन किया गया कोई अंतर्निहित फ़ंक्शन नहीं है। हालाँकि, इस परिणाम को प्राप्त करने के लिए कई दृष्टिकोण अपनाए जा सकते हैं।
एक सीधा तरीका स्ट्रिंग के माध्यम से पुनरावृत्त करने और सबस्ट्रिंग की घटनाओं को गिनने के लिए एक लूप का उपयोग करना है। आरंभिक सूचकांक को पहली घटना के परिणाम के लिए आरंभ किया जाता है, और लूप तब तक जारी रहता है जब तक कि n-वीं घटना नहीं मिल जाती। सूचकांक = haystack.find(सुई) जबकि सूचकांक >= 0 और n > 1: सूचकांक = haystack.find(सुई, सूचकांक लेन(सुई)) एन -= 1 रिटर्न इंडेक्स
def find_nth_occurrence(haystack, needle, n):
index = haystack.find(needle)
while index >= 0 and n > 1:
index = haystack.find(needle, index len(needle))
n -= 1
return index
एक और पायथोनिक दृष्टिकोण नियमित का उपयोग करना है भाव. नियमित अभिव्यक्ति स्ट्रिंग को खोजने और हेरफेर करने का एक शक्तिशाली और संक्षिप्त तरीका प्रदान करती है। निम्नलिखित फ़ंक्शन सबस्ट्रिंग की सभी घटनाओं को खोजने के लिए re.findall() विधि का उपयोग करता है और फिर n-वें इंडेक्स को पुनः प्राप्त करता है:import re def find_nth_occurrence_regex(घास का ढेर, सुई, n): घटनाएँ = पुनः खोजें (सुई, घास का ढेर) यदि लेन(घटनाएँ) >= n: वापसी haystack.index(घटनाएँ[n - 1]) अन्य: वापसी -1
import re
def find_nth_occurrence_regex(haystack, needle, n):
occurrences = re.findall(needle, haystack)
if len(occurrences) >= n:
return haystack.index(occurrences[n - 1])
else:
return -1
पुनरावृत्तीय और नियमित अभिव्यक्ति दृष्टिकोण के बीच चयन अंततः हाथ में कार्य की विशिष्ट आवश्यकताओं पर निर्भर करता है। छोटी स्ट्रिंग्स के लिए, पुनरावृत्त दृष्टिकोण पर्याप्त हो सकता है, जबकि बड़ी स्ट्रिंग्स के लिए, नियमित अभिव्यक्ति दृष्टिकोण बेहतर प्रदर्शन प्रदान कर सकता है। अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3