मैं शब्दों की सूची में एक स्ट्रिंग के सभी इंडेक्स पदों का पता लगाने की कोशिश कर रहा हूं और मैं चाहता हूं कि मूल्य सूची के रूप में लौटाए जाएं। मैं स्ट्रिंग को अपने आप में ढूंढना चाहूंगा, या यदि यह पहले से हो या विराम चिह्न के बाद हो, लेकिन यदि यह एक बड़े शब्द का सबस्ट्रिंग नहीं है।पायथन में सूची समझ में आप रेगेक्स का उपयोग कैसे करते हैं?
निम्नलिखित कोड केवल "गाय" को कैप्चर करता है और "परीक्षण; गाय" और "गाय" दोनों को याद करता है।
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == myString]
print indices
>> 5
मैं रेगुलर एक्सप्रेशन का उपयोग करने के लिए कोड को बदलने की कोशिश की है:
import re
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == re.match('\W*myString\W*', myList)]
print indices
लेकिन यह एक त्रुटि देता है: उम्मीद स्ट्रिंग या बफ़र
किसी को भी जानता है कि मैं गलत है कि मैं क्या कर रहा हूँ तो सुनने के लिए बहुत खुश होना चाहिए। मुझे लगता है कि यह इस तथ्य से कुछ करने के लिए है कि मैं स्ट्रिंग की अपेक्षा करते समय वहां एक नियमित अभिव्यक्ति का उपयोग करने की कोशिश कर रहा हूं। क्या कोई समाधान है?
उत्पादन मैं तलाश कर रहा हूँ पढ़ना चाहिए:
>> [0, 4, 5]
धन्यवाद
हो सकता है कि 're.escape' भी जोड़ सकता हूँ? –
@MartijnPieters: निश्चित, जोड़ा। – georg
यह पहले तत्व से मेल नहीं खाता है, जिसे ओपी मिलान करना चाहता है। –