2015-07-28 10 views
5

तो यहाँ मेरी समस्या मैं इस एकपायथन स्ट्रिंग डबल स्प्लिटिंग?

01000200030004020511050006000702051108020511090205111002051111020511120205111300140205111500160017001800190020002100 

इस तरह की स्ट्रिंग दिया हूँ तो मैं कुछ है कि इस

[['01', 00], ['02', 00], ['03', 00], ['04', 020511], ['05', 00], ['06', 00], ['07', 020511, ['08', 020511], ['09', 020511], ['10', 020511,], ['11', 020511], ['12', 020511], ['13', 00], ['14', 020511], ['15', 00], ['16', 00], ['17', 00], ['18', 00], ['19', 00], ['20', 00], ['21', 00]] 

तो सबसे पहले मैंने सोचा था कि उपयोग करने का प्रयास करने देता है की तरह लग रही खत्म हो जाएगा में इसे अलग करने के लिए है विभाजन और हो सकता है कि काम करेंगे ताकि मेरा पहली कोशिश थी और यह सिर्फ बाहर इस

['01', '02', '03', '0402051105', '06', '0702051108020511090205111', '20511110205111202051113', '1402051115', '16', '17', '18', '19', '2', '021', ''] 

की तरह उसके बाद मैं विफल रहा है, हालांकि अपने आप के लिए आया था कि मैं जा रहा हूँ दो बार विभाजित करने के लिए '00' और '020,511' से छुटकारा पाने के लिए है, तो मैं विधि

re.split('020511|00', theStr) 

कि विधि मैं इस वापस मिल कर इस्तेमाल किया ...

['01', '02', '03', '04', '05', '06', '07', '08', '09', '1', '2051111', '12', '13', '14', '15', '16', '17', '18', '19', '2', '021', ''] 

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

+0

तो मूल रूप से विभाजक दो अंकों की संख्या में वृद्धि कर रहा है? वह अजीब है। क्या होगा, कहें, आपका '04' 'दूसरा भाग स्वयं' '05''' है, उदा। '[04, 050611], [05, ...]'? –

+0

क्या यह एक परिभाषित एन्कोडिंग है? – MattH

+0

नहीं, मुझे पूरी तरह से यकीन नहीं है कि आप क्या मतलब है लेकिन प्रत्येक 01 या 02 के बाद या जो भी यह केवल 21 तक चलता है, उसके बाद 00 या 020511 होगा और मुझे बस उन्हें एक साथ समूह करना होगा, तो ऐसा कहें आपके पास 01 होगा और कहें कि दो 00 के बाद मुझे उन्हें [['01', 00]] – cunniemm

उत्तर

5

आप re.findall() उपयोग कर सकते हैं लंबाई 2 कि 00 या 020511 द्वारा पीछा के साथ अंक खोजने के लिए:

>>> re.findall('(\d{2})(020511|00)', theStr) 
[('01', '00'), ('02', '00'), ('03', '00'), ('04', '020511'), ('05', '00'), ('06', '00'), ('07', '020511'), ('08', '020511'), ('09', '020511'), ('10', '020511'), ('11', '020511'), ('12', '020511'), ('13', '00'), ('14', '020511'), ('15', '00'), ('16', '00'), ('17', '00'), ('18', '00'), ('19', '00'), ('20', '00'), ('21', '00')] 
>>> 

और आप एक सूची में परिणाम आप re.finditer कि पुनरावर्तक रिटर्न उपयोग कर सकते हैं और एक सूची समझ चाहते हैं सापेक्ष समूहों को सूची में बदलने के लिए:

>>> [list(i.group(1,2)) for i in re.finditer('(\d{2})(020511|00)', theStr)] 
[['01', '00'], ['02', '00'], ['03', '00'], ['04', '020511'], ['05', '00'], ['06', '00'], ['07', '020511'], ['08', '020511'], ['09', '020511'], ['10', '020511'], ['11', '020511'], ['12', '020511'], ['13', '00'], ['14', '020511'], ['15', '00'], ['16', '00'], ['17', '00'], ['18', '00'], ['19', '00'], ['20', '00'], ['21', '00']] 
>>> 
+0

क्या यह इसे रखता है एक सूची में? या? – cunniemm

+0

@BSD_ यह 'tuple's की 'सूची' देता है। – Phylogenesis

+0

@BSD_ Yep संपादन की जांच करें! – Kasramvd

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