दिलचस्प पोस्ट
मैं जावा में एक निर्देशिका में अंतिम संशोधित फ़ाइल कैसे प्राप्त करूं? सी # रेगेक्स स्प्लिट – कॉमा के बाहर उद्धरण चिह्न वैरिएबल को त्रुटि प्रारंभ नहीं किया जा सकता है मीडिया प्रश्न: डेस्कटॉप, टैबलेट और मोबाइल को कैसे लक्षित किया जाए? कैसे कॉन को केवल संख्याएं लेना चाहिए सेगमेंटेड कंट्रोल बटन में सेगमेंट को फिर से क्लिक करने तक स्थायी रूप से अचयनित कैसे करें उन्हें खोलने के बिना लिनक्स पर सभी सीरियल डिवाइस (टीटीआई, टीटीआईएसबी, ..) को कैसे खोजें? पर्ल सरणी बनाम सूची छवि प्रोसेसिंग, पायथन में? DocumentListener Java, मैं JTextBox में खाली स्ट्रिंग कैसे रोकूं? एंड्रॉइड लाइब्रेरी ग्रैड रिलीज जार PowerShell: व्यवस्थापक के रूप में एक आदेश चला रहा है ज्ञात और अज्ञात क्षेत्रों के साथ json Deserialize Log4j के साथ सशर्त लॉगिंग Xcode 8 "एपीएस-एंटरटेनमेंट एंटाइटेलमेंट ऐप के हस्ताक्षर से गायब है" सबमिट करें

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

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

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) 

Solutions Collecting From Web of "कैसे जांचने के लिए कि एक स्ट्रिंग अजगर में एक सूची से एक तत्व है"

किसी जनरेटर के साथ 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']