यहां सबसे अच्छा विकल्प नियमित अभिव्यक्ति का उपयोग करना है। नियमित अभिव्यक्तियों के साथ काम करने के लिए पायथन में the re
module है।
हम एक सरल खोज का उपयोग "is"
की स्थिति का पता लगाने के लिए:
>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)
यह एक मैच वस्तु के रूप में पहला मैच देता है।
>>> match.start(1)
8
संपादित करें:: हम तो बस प्रारंभिक स्थिति पाने के लिए MatchObject.start()
का उपयोग एक अच्छा बनाया बिंदु, हम "is"
एक समूह बनाने के लिए और है कि समूह से मेल खाते हैं सुनिश्चित करने के लिए हम सही स्थिति मिलता है।
टिप्पणियों में बताया गया है, यह कुछ अनुमान लगाता है। एक यह है कि घिरा का अर्थ है कि "is"
स्ट्रिंग की शुरुआत या अंत में नहीं हो सकता है, यदि ऐसा है, तो एक अलग नियमित अभिव्यक्ति की आवश्यकता होती है, क्योंकि यह केवल तारों से घिरा हुआ है।
दूसरा यह है कि यह विशेष वर्णों के रूप में संख्याओं की गणना करता है - आपने गैर-वर्णमाला कहा है, जिसका अर्थ है कि मैं संख्याओं को शामिल करता हूं। यदि आप संख्याओं को गिनने के लिए नहीं चाहते हैं, तो r"\b(is)\b"
का उपयोग सही समाधान है।
स्रोत
2012-05-13 13:43:25
आपको वास्तव में इसके लिए '\ b' का उपयोग करना चाहिए। – georg
@ thg435 क्या, क्षमा करें? –
're.search (r '\ bis \ b')' - अन्यथा आप पिछले प्रतीक से मेल खाते हैं और स्थिति गलत है। – georg