के बाद से तुम वैसे भी len(trailing)
प्राप्त करने के लिए (जहां trailing
स्ट्रिंग आप अगर यह अनुगामी है निकालना चाहते है), मैं परहेज की सलाह देते हैं इस मामले में .endswith
काम का मामूली दोहराव होगा। बेशक, कोड का सबूत समय में है, इसलिए, चलो कुछ माप (कार्यों के बाद उत्तरदाताओं उन्हें प्रस्ताव नामकरण) करते हैं:
import re
astring = 'this is some string rec'
trailing = ' rec'
def andrew(astring=astring, trailing=trailing):
regex = r'(.*)%s$' % re.escape(trailing)
return re.sub(regex, r'\1', astring)
def jack0(astring=astring, trailing=trailing):
if astring.endswith(trailing):
return astring[:-len(trailing)]
return astring
def jack1(astring=astring, trailing=trailing):
regex = r'%s$' % re.escape(trailing)
return re.sub(regex, '', astring)
def alex(astring=astring, trailing=trailing):
thelen = len(trailing)
if astring[-thelen:] == trailing:
return astring[:-thelen]
return astring
हम इस अजगर फ़ाइल a.py
नाम दिया है कहो और क्या है वर्तमान निर्देशिका; अब, ...:
$ python2.6 -mtimeit -s'import a' 'a.andrew()'
100000 loops, best of 3: 19 usec per loop
$ python2.6 -mtimeit -s'import a' 'a.jack0()'
1000000 loops, best of 3: 0.564 usec per loop
$ python2.6 -mtimeit -s'import a' 'a.jack1()'
100000 loops, best of 3: 9.83 usec per loop
$ python2.6 -mtimeit -s'import a' 'a.alex()'
1000000 loops, best of 3: 0.479 usec per loop
जैसा कि आप देख, आरई आधारित समाधान "बुरी से हराया" कर रहे हैं (जैसा कि अक्सर होता है जब एक "Overkills" एक समस्या - संभवतः कारणों आर ई में से एक है इस तरह के एक बुरा पाइथन समुदाय में प्रतिनिधि! -), हालांकि @ जैक की टिप्पणी में सुझाव @ एंड्रयू के मूल से बेहतर तरीका है। स्ट्रिंग-आधारित समाधान, जैसा कि अपेक्षित, शिंग, मेरे endswith
के साथ-साथ @ जैक के ऊपर एक छोटा सा लाभ होने पर (केवल 15% तेज होने के कारण)। तो, शुद्ध-स्ट्रिंग दोनों विचार अच्छे हैं (साथ ही दोनों संक्षेप में और स्पष्ट हैं) - मैं अपने संस्करण को थोड़ा सा पसंद करता हूं क्योंकि मैं चरित्र द्वारा, एक मितव्ययी हूं (कुछ कह सकता है, कट्टर ;-) व्यक्ति .. । "नहीं बर्बाद, नहीं चाहता" -)
स्रोत
2010-09-08 00:36:21
संभव डुप्लिकेट [अजगर एक स्ट्रिंग के अंतिम 3 अक्षरों निकालें] (http://stackoverflow.com/questions/1798465/python-remove-last-3-characters-of- एक-स्ट्रिंग) की – outis
संभव डुप्लिकेट [मैं कैसे पायथन में एक स्ट्रिंग के अंत से सबस्ट्रिंग निकालूँ?] (http://stackoverflow.com/questions/1038824/how-do-i-remove-a-substring- ऑफ-द-एंड-ए-स्ट्रिंग-इन-पायथन) –