दिलचस्प पोस्ट
प्रश्न सेलेक्टर्स सब क्या करें, GetElementsByClassName और अन्य getElementsÃÆ'Ã? एक € ™ Ã⠀ SA, एसएसएच पायथन का उपयोग करने का सबसे आसान तरीका क्या है? लालची बनाम अनिच्छुक बनाम पारस्परिक क्वांटीफायर निर्धारित करें कि क्या JSON एक JSONObject या JSONArray है WCF – संदेश आकार कोटा कैसे बढ़ाएं JQuery .val () और .attr ('value') के बीच अंतर क्या है? माईएसक्यूएल विदेशी कुंजी बाधाएं, कैसकेड हटाना एक सिंगलटन के मेयर के कार्यान्वयन को वास्तव में एक सिंगलटन कैसे होता है ऑपरेटर बनाना << आभासी? एक JSON सरणी को पार्स करने के लिए GSON का उपयोग करना जावा: दोनों एक ही पैकेज में हैं, तो मैं मौजूदा एक स्टैंडअलोन आवेदन कैसे शुरू करूं? typedef सूचक const weirdness बड़े आर कार्यक्रमों को व्यवस्थित करने के लिए कैसे? एक JTextArea या JTextPane में पाठ केंद्रित करना – क्षैतिज पाठ संरेखण विंडो बैच फ़ाइल में सबस्ट्रिंग को कैसे बदलें

कैसे जांचने के लिए कि एक स्ट्रिंग अजगर में एक सूची से एक तत्व है

मेरे पास ऐसा कुछ है:

extensionsToCheck = ['.pdf', '.doc', '.xls'] for extension in extensionsToCheck: if extension in url_string: print(url_string) 

मैं सोच रहा हूं कि अजगर में ऐसा करने के लिए अधिक आकर्षक तरीका क्या होगा (लूप का उपयोग किए बिना)? मैं इस तरह से कुछ (सी / सी ++ से) की सोच रहा था, लेकिन यह काम नहीं करता था:

 if ('.pdf' or '.doc' or '.xls') in url_string: print(url_string) 

वेब के समाधान से एकत्रित समाधान "कैसे जांचने के लिए कि एक स्ट्रिंग अजगर में एक सूची से एक तत्व है"

किसी जनरेटर के साथ any एक के साथ प्रयोग करें, जो पहले सत्य पर शॉर्ट सर्किट:

 if any(ext in url_string for ext in extensionsToCheck): print(url_string) 

संपादित करें: मुझे लगता है कि यह जवाब ओपी ने स्वीकार कर लिया है। यद्यपि मेरा समाधान उसकी विशेष समस्या का "पर्याप्त पर्याप्त" समाधान हो सकता है, और यह जांचने के लिए एक सामान्य सामान्य तरीका है कि सूची में कोई स्ट्रिंग दूसरे स्ट्रिंग में पाई जाती है, तो ध्यान रखें कि यह सब यही समाधान है। यह परवाह नहीं है कि स्ट्रिंग कहां मिलती है। यदि यह महत्वपूर्ण है, जैसा कि अक्सर यूआरएल के साथ होता है, आपको @ वैल्लामिर पालन्ट के जवाब पर गौर करना चाहिए, या आप झूठी सकारात्मक होने का जोखिम लेना चाहिए।

 extensionsToCheck = ('.pdf', '.doc', '.xls') 'test.doc'.endswith(extensionsToCheck) # returns True 'test.jpg'.endswith(extensionsToCheck) # returns False 

ठीक से यूआरएल को पार्स करना बेहतर है – इस तरह आप http://.../file.doc?foo और http://.../foo.doc/file.exe सही ढंग से http://.../foo.doc/file.exe

 from urlparse import urlparse import os path = urlparse(url_string).path ext = os.path.splitext(path)[1] if ext in extensionsToCheck: print(url_string) 

जांचें कि क्या यह regex से मेल खाता है:

 '(\.pdf$|\.doc$|\.xls$)' 

ध्यान दें: यदि आप एक्सटेंशन यूआरएल के अंत में नहीं हैं, तो $ अक्षर निकालें, लेकिन यह इसे थोड़ा कमजोर कर देता है

यदि आप एक एकल लाइन समाधान चाहते हैं तो सूची की समझ का उपयोग करें निम्नलिखित कोड में url_string युक्त सूची लौटाई जाती है, जब उसे एक्सटेंशन .doc, .pdf और .xls हो या रिक्त सूची देता है जब उसमें एक्सटेंशन शामिल नहीं होता है।

 print [url_string for extension in extensionsToCheck if(extension in url_string)] 

नोट: यह केवल जांच करने के लिए है कि इसमें क्या शामिल है या नहीं और उपयोगी नहीं है जब कोई एक्सटेंशन के मिलान में सटीक शब्द निकालना चाहता है।

यह @ पीसीन द्वारा दी गई सूची की समझ के उत्तर का एक प्रकार है।

आउटपुट मूल्य को बदलकर, आप वास्तव में मेलिंग पैटर्न को सूची की समझ से निकाल सकते हैं any() @ लॉरिट्ज-वी-थॉलो द्वारा any() दृष्टिकोण के साथ संभव नहीं)

 extensionsToCheck = ['.pdf', '.doc', '.xls'] url_string = 'http://.../foo.doc' print [extension for extension in extensionsToCheck if(extension in url_string)] 

[ '.doc'] `

यदि आप मिलान किए गए पैटर्न के बाद एक बार अतिरिक्त जानकारी एकत्र करना चाहते हैं, तो आप एक नियमित अभिव्यक्ति सम्मिलित कर सकते हैं (यह तब उपयोगी हो सकता है जब अनुमत पैटर्न की सूची एक एकल रीगेक्स पैटर्न में लिखने के लिए बहुत लंबी है)

 print [re.search(r'(\w+)'+extension, url_string).group(0) for extension in extensionsToCheck if(extension in url_string)] 

['foo.doc']