दिलचस्प पोस्ट
पार्सिंग में जावा की तारीख समस्या एक छवि का उपयोग करने से सर्कल div बनाने का आसान तरीका? लम्मेटाइजेशन जावा बाइंड क्लास विंडो स्क्रॉल ईवेंट में टॉगल करें उद्देश्य-सी में स्ट्रिंग टाइप की एक दो आयामी सरणी कैसे घोषित करें? Mysql स्थानीयहोस्ट! = 127.0.0.1? नमूना http रेंज अनुरोध सत्र कोड गोल्फ: शब्दों की संख्या एंड्रॉइड एप आइकन प्रोग्रामेटिक रूप से छिपाना / दिखाना कैसे गैर-सदस्य कार्य एनक्यूसिलेशन में सुधार ASP.NET MVC हैंडलएअरर तारों वाली घटनाओं के बीच "नए" के बिना अंतर मैटलब के एमल्डिवैड को कैसे लागू करें (बैकस्लैश ऑपरेटर उर्फ ​​"\") एक स्प्रिंग बीन में मोकीटीओ को इंजेक्शन लगाने सी में नकारात्मक संख्या का प्रतिनिधित्व?

मैं पायथन के स्ट्रिंग के अंत से एक सबस्ट्रिंग कैसे निकालूं?

मेरे पास निम्न कोड है:

url = 'abcdc.com' print(url.strip('.com')) 

मुझे उम्मीद थी: abcdc

मुझे मिल गया: abcd

अब मैं करता हूँ

 url.rsplit('.com', 1) 

क्या कोई बेहतर तरीका है?

वेब के समाधान से एकत्रित समाधान "मैं पायथन के स्ट्रिंग के अंत से एक सबस्ट्रिंग कैसे निकालूं?"

आप यह कर सकते हैं:

 url = 'abcdc.com' if url.endswith('.com'): url = url[:-4] 

या नियमित अभिव्यक्ति का उपयोग करना:

 import re url = 'abcdc.com' url = re.sub('\.com$', '', url) 

यदि आप सुनिश्चित हैं कि स्ट्रिंग अंत में ही प्रकट होती है, तो सबसे आसान तरीका 'प्रतिस्थापित' का उपयोग करना होगा:

 url = 'abcdc.com' print url.replace('.com','') 
 def strip_end(text, suffix): if not text.endswith(suffix): return text return text[:len(text)-len(suffix)] 

चूंकि ऐसा लगता है कि किसी ने इस पर अभी तक यह नहीं बताया है:

 url = "www.example.com" new_url = url[:url.rfind(".")] 

इसे split() का उपयोग करने वाले तरीकों की तुलना में अधिक कुशल होना चाहिए क्योंकि कोई नई सूची ऑब्जेक्ट नहीं बनाई गई है, और यह समाधान कई बिंदुओं के साथ तार के लिए काम करता है।

आप अपने यूआरएल के बारे में क्या जानते हैं और वही कर सकते हैं जो आप करना चाहते हैं। यदि आपको पता है कि यह हमेशा '.com' (या '.net' या '.org') में समाप्त होगा,

  url=url[:-4] 

सबसे तेज समाधान है अगर यह अधिक सामान्य यूआरएल है तो आप शायद अजगर लायब्रेरी को देखने के लिए बेहतर हैं जो अजगर के साथ आता है।

यदि आप दूसरी तरफ आप अंतिम 'सब कुछ बाद ही निकालना चाहते हैं।' एक स्ट्रिंग में फिर

 url.rsplit('.',1)[0] 

काम करेगा। या यदि आप चाहते हैं कि सब कुछ पहले '। फिर कोशिश करो

 url.split('.',1)[0] 

कैसे url[:-4] बारे में url[:-4] ?

एक पंक्ति में:

 text if not text.endswith(suffix) or len(suffix) == 0 else text[:-len(suffix)] 

यूआरएल के लिए (जैसा कि यह दिया गया उदाहरण के आधार पर विषय का हिस्सा है), ऐसा कोई भी ऐसा कर सकता है:

 import os url = 'http://www.stackoverflow.com' name,ext = os.path.splitext(url) print (name, ext) #Or: ext = '.'+url.split('.')[-1] name = url[:-len(ext)] print (name, ext) 

दोनों आउटपुट होंगे: ('http://www.stackoverflow', '.com')

यदि आप ".com" को विभाजित करने की आवश्यकता होती है, या कुछ विशेष प्रकार के साथ यह भी str.endswith(suffix) के साथ जोड़ा जा सकता है

यदि आप जानते हैं कि यह एक एक्सटेंशन है, तो फिर

   url = 'abcdc.com'
   ...
   url.rsplit ('।', 1) [0] # विभाजित '।', सही से शुरू, अधिकतम 1 विभाजित

यह abcdc.com या www.abcdc.com या abcdc.[anything] साथ समान रूप से अच्छी तरह से काम करता है abcdc.[anything] और अधिक एक्स्टेंसिबल है।

 import re def rm_suffix(url = 'abcdc.com', suffix='\.com'): return(re.sub(suffix+'$', '', url)) 

मैं इस उत्तर को दोबारा करना चाहता हूं क्योंकि यह करने का सबसे अर्थपूर्ण तरीका है। बेशक, निम्नलिखित में कम CPU समय लगेगा

 def rm_dotcom(url = 'abcdc.com'): return(url[:-4] if url.endswith('.com') else url) 

हालांकि, यदि सीपीयू बोतल गर्दन है, तो पायथन में क्यों लिखते हैं?

जब सीपीयू एक बोतल गर्दन वैसे भी है ?? ड्राइवरों में, हो सकता है

नियमित अभिव्यक्ति का उपयोग करने का लाभ कोड पुन: प्रयोज्यता है। क्या होगा अगर आप अगले '.me' को हटाना चाहते हैं, जिसमें केवल तीन अक्षर हैं?

समान कोड चाल करना होगा

 >>> rm_sub('abcdc.me','.me') 'abcdc' 

नियमित अभिव्यक्ति के लिए यह एकदम सही उपयोग है:

 >>> import re >>> re.match(r"(.*)\.com", "hello.com").group(1) 'hello' 

या आप विभाजन का उपयोग कर सकते हैं:

 a = 'abccomputer.com' res = a.split('.com',1)[0] 
 def remove_file_type(infile): import re return(re.sub('\.[^.]*$','',infile)) remove_file_type('abc.efg')'abc' 

मेरे मामले में मुझे अपवाद उठाने की जरूरत थी, इसलिए मैंने किया:

 class UnableToStripEnd(Exception): """A Exception type to indicate that the suffix cannot be removed from the text.""" @staticmethod def get_exception(text, suffix): return UnableToStripEnd("Could not find suffix ({0}) on text: {1}." .format(suffix, text)) def strip_end(text, suffix): """Removes the end of a string. Otherwise fails.""" if not text.endswith(suffix): raise UnableToStripEnd.get_exception(text, suffix) return text[:len(text)-len(suffix)] 

url.rsplit ('कॉम', 1)

बिल्कुल सही नहीं है

आपको वास्तव में लिखने की आवश्यकता क्या है?

 url.rsplit('.com', 1)[0] 

, और यह बहुत संक्षिप्त IMHO लग रहा है

हालांकि, मेरी निजी वरीयता यह विकल्प है क्योंकि यह केवल एक पैरामीटर का उपयोग करता है:

 url.rpartition('.com')[0] 

यदि आप केवल विस्तार पट्टी करने का मतलब है

 url = 'abcdc.com' print('.'.join(url.split('.')[:-1])) 

यह किसी भी विस्तार के साथ काम करता है, साथ ही साथ फ़ाइल नाम में मौजूद अन्य बिंदुओं के साथ भी। यह डॉट्स पर सूचीबद्ध होने के लिए स्ट्रिंग को विभाजित करता है और अंतिम तत्व के बिना इसमें जुड़ जाता है।

शायद सबसे तेजी से नहीं, लेकिन मेरे लिए यह अन्य विधियों की तुलना में अधिक पठनीय है।

जिस तरह से आप इसे आरएसपीटीटी के साथ कर रहे हैं, उसमें कुछ भी गलत नहीं दिखता, यह ठीक वही है जो आप चाहते हैं। यह सब इस बात पर निर्भर करता है कि आप किस तरह के समाधान का समाधान चाहते हैं। क्या आप हमेशा .com को हटाना चाहते हैं, या क्या यह कभी-कभी हो सकता है .org? यदि ऐसा है, तो अन्य समाधानों में से किसी एक का उपयोग करें, अन्यथा, rsplit () के साथ छड़ी

कारण यह है कि पट्टी () जिस तरह से आप की उम्मीद करते हैं काम नहीं करता है यह प्रत्येक चरित्र पर व्यक्तिगत रूप से काम करता है यह आपकी स्ट्रिंग के माध्यम से स्कैन करेगा और अंत से और सामने के सभी वर्णों को हटा देगा। इसलिए यदि आपकी स्ट्रिंग 'सी' के साथ शुरू होती है, तो यह भी समाप्त हो जाएगी। आप आरस्ट्रिप का इस्तेमाल केवल पीछे से पट्टी करने के लिए करेंगे।