2012-05-10 7 views
10

का उपयोग कर पायथन में स्ट्रिंग स्प्लिटिंग मैं पाइथन में एक स्ट्रिंग को विभाजित करने की कोशिश कर रहा हूं ताकि मुझे एक निश्चित रेगेक्स से पहले सबकुछ मिल सके।रीजिक्स

उदाहरण स्ट्रिंग: "Some.File.Num10.example.txt"

मैं इस हिस्से से पहले सब कुछ की जरूरत है: "Num10", regex: r'Num\d\d' (संख्या अलग अलग होंगे और संभवत: क्या के बाद है)।

यह कैसे करें इस पर कोई विचार है?

उत्तर

10
>>> import re 
>>> s = "Some.File.Num10.example.txt" 
>>> p = re.compile("Num\d{2}") 
>>> match = p.search(s) 
>>> s[:match.start()] 
'Some.File.' 

यह और अधिक कुशल है कि एक विभाजन कर रही खोज पूरी स्ट्रिंग स्कैन करने के लिए नहीं है, इसलिए हो सकता है। यह पहले मैच पर टूट जाता है। आपके उदाहरण में यह अलग नहीं होगा क्योंकि स्ट्रिंग कम हैं, लेकिन यदि आपकी स्ट्रिंग बहुत लंबी है और आप जानते हैं कि मैच शुरुआत में होगा, तो यह दृष्टिकोण तेज़ होगा।

मैंने प्रोफ़ाइल खोज() और विभाजन() को एक छोटा सा प्रोग्राम लिखा है और उपरोक्त दावे की पुष्टि की है।

+0

आप 'p = re.compile (" Num \ d ") का उपयोग कर सकते हैं, क्योंकि बस कुछ भी हो सकता है ताकि हम स्ट्रिंग में शुरू होने पर चिंतित हों। – theharshest

4

आप उपयोग कर सकते हैं पायथन के re.split()

import re 

my_str = "This is a string." 

re.split("\W+", my_str) 

['This', 'is', 'a', 'string', ''] 
9
>>> import re 
>>> text = "Some.File.Num10.example.txt" 
>>> re.split(r'Num\d{2}',text)[0] 
'Some.File.' 
संबंधित मुद्दे