मैं एक समारोह स्ट्रिंग की एक सूची से गांठ बाहर ले सकते हैं और उन्हें एक सूची के रूप में वापसी करनी में फिर से मैच वस्तुओं का उपयोग करें:कैसे एक सूची समझ
def filterPick(lines,regex):
result = []
for l in lines:
match = re.search(regex,l)
if match:
result += [match.group(1)]
return result
वहाँ एक सूची के रूप में इस धूमिल करने के लिए एक रास्ता है समझ? जाहिर है यह काफी स्पष्ट है; बस उत्सुक।
जो लोग @Alex के लिए योगदान दिया है, विशेष रूप से उल्लेखनीय के लिए धन्यवाद। मेरे द्वारा समाप्त किए गए कार्यों का एक संघनित संस्करण यहां दिया गया है; - कि आप कैसे "निर्दिष्ट" एक मूल्य है कि आप उपयोग करने की आवश्यकता है
import re
def filterPick(list,filter):
return [ (l, m.group(1)) for l in list for m in (filter(l),) if m]
theList = ["foo", "bar", "baz", "qurx", "bother"]
searchRegex = re.compile('(a|r$)').search
x = filterPick(theList,searchRegex)
>> [('bar', 'a'), ('baz', 'a'), ('bother', 'r')]
एलेक्स, मुझे यह पसंद है; धन्यवाद और +1। मेरे पास इस कोड के साथ कुछ काफी भारी उठाना है - क्या मुझे "गलत इटरेटर" को सेट अप और फायर-अप करने के अतिरिक्त ओवरहेड के बारे में चिंता करनी चाहिए? बीटीडब्लू मैं "बाद में अनुकूलित" के सिद्धांत की सदस्यता लेता हूं। –
@ ब्रेंट, "गलत इटरेटर" खोज कॉल नगण्य होना चाहिए; एक मामूली अनुकूलन '(regex.search (l), '' 'regex.search (l)]' के बदले में है (जो मुझे अधिक पठनीय लगता है लेकिन धीमा धीमा है - मैंने सोचा कि आप संभवतः नहीं हो सकते जल्दी में जब आप वास्तव में पुनः ऑब्जेक्ट की विधि के बजाय मॉड्यूल से 're.search' फ़ंक्शन को कॉल कर रहे थे। list rep के बाहर 'regex.search' को बाध्य विधि के रूप में खींचना एक और मामूली लेकिन उपयोगी अनुकूलन है, btw। –
जैसे ही मैंने आपका जवाब देखा, मुझे एहसास हुआ कि re.search का उपयोग करने का सबसे अच्छा तरीका नहीं था। क्या आप मेरे लिए स्पष्टीकरण दे सकते हैं कि आप "regex.search को listcomp के बाहर एक बाध्य विधि के रूप में कैसे खींचें"? मैं वास्तव में सराहना करता हूं 'असाइनमेंट' बिट के लिए एक listcomp और पायथन नोब –