2012-05-18 14 views
9

मैं रेगेक्स से परिचित नहीं हूं, और अगर कोई रेगेक्स का उपयोग करके समाधान दे रहा है तो यह बहुत अच्छा होगा, जिससे वे अपने वाक्यविन्यास को समझा सकते हैं ताकि मैं इसे भविष्य की परिस्थितियों में लागू कर सकूं।स्ट्रिंग से शब्द की पहली उपस्थिति को हटा रहा है?

मैं एक स्ट्रिंग (यानी। 'Description: Mary had a little lamb') है, और मुझे दूर करने के लिए 'Description: ' ऐसी है कि स्ट्रिंग 'Mary had a little lamb,' लेकिन केवल पहले उदाहरण, पढ़ें चाहते हैं ऐसी है कि यदि स्ट्रिंग 'Description: Description' था, नई स्ट्रिंग होगा 'Description.'

कोई विचार? धन्यवाद!

+0

है कि के साथ, आप re.sub है, जो भी एक गिनती चर है में उपयोग करना चाहते हैं आप जानते हैं कि पहला उदाहरण हमेशा स्ट्रिंग की शुरुआत में होगा? –

उत्तर

25

पायथन के str.replace में अधिकतम प्रतिस्थापन तर्क है। तो, अपने मामले में, यह करें:

>>>mystring = "Description: Mary had a little lamb Description: " 
>>>print mystring.replace("Description: ","",1) 

"Mary had a little lamb Description: " 

रेगेक्स का उपयोग मूल रूप से वही है। सबसे पहले, अपने रेगुलर एक्सप्रेशन से मिलती है:

"Description: " 

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

>>>import re 
>>>re.sub("Description: ","",mystring,count=1) 
'Mary had a little lamb Description: ' 
+1

आपको तीसरे तर्क को निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि यह 1 –

+3

@omu_negru पर डिफ़ॉल्ट है, नहीं। यह सभी घटनाओं के लिए डिफ़ॉल्ट है। – jamylak

+0

@omu_negru यह 1 से डिफ़ॉल्ट नहीं है, यह डिफ़ॉल्ट है ... मुझे कुछ भी नहीं लगता है। यदि आपके पास तीसरा तर्क नहीं है, तो यह केवल सभी को नहीं बल्कि सभी मामलों को प्रतिस्थापित करेगा। – Josiah

0

regex का उपयोग करके में 1 के रूप में गिनती पैरामीटर निर्दिष्ट करें। हालांकि ऐसा लगता है कि इस मामले में regex की आवश्यकता नहीं है।

>>> import re 
>>> text = 'Description: Mary had a little lamb' 
>>> re.sub('Description: ','',text,1) 
'Mary had a little lamb' 
+1

आह, ठीक है आपकी मदद के लिए धन्यवाद! – zhuyxn

+0

क्या मैं पूछ सकता हूं कि गिनती पैरामीटर क्या कर रहा है? – song0089

+0

@ song0089 केवल 1 प्रतिस्थापन – jamylak

2

इस regex किसी भी "शब्द" के लिए काम करेगा, न सिर्फ "विवरण::"

>>> import re 
>>> s = 'Blah: words words more words' 
>>> print re.sub(r'^\S*\s', '', s) 
words words more words 
>>> 
+0

यदि आप सिर्फ स्ट्रिंग में पहला शब्द निकालना चाहते हैं, तो क्या आप ".join (s.split (" ") [1:]) का उपयोग नहीं करेंगे? – Josiah

+4

@ जोशीया, बेहतर होगा। "विभाजन" (2] "[2]'। – Duncan

संबंधित मुद्दे