2010-07-27 11 views
15

मैं सबप्रोसेस मॉड्यूल की संवाद विधि से कुछ डेटा में पढ़ रहा हूं। यह "\ r \ n" s से अलग एक बड़ी स्ट्रिंग के रूप में आ रहा है। मैं इसे लाइनों की सूची में विभाजित करना चाहता हूं। यह अजगर में कैसे किया जाता है?लाइनों की सूची में " r n" से अलग स्ट्रिंग को विभाजित करना?

+1

जब आप 'string.split() को पढ़ने' तुम क्या मिला? आपने क्या प्रयास किया है आप किस ट्यूटोरियल का उपयोग कर रहे हैं? –

उत्तर

33

स्ट्रिंग पर splitlines विधि का उपयोग करें।

डॉक्स से

:

str.splitlines ([keepends]) वापसी स्ट्रिंग में लाइनें, लाइन सीमा पर तोड़ने की एक सूची। लाइन ब्रेक जिसके परिणामस्वरूप सूची में शामिल नहीं हैं, जब तक कि keepends दिया जाता है और सच है।

यह सही काम करेगा कि ओएस के बावजूद लाइन अंत "\ r \ n", "\ r" या "\ n" है।

एनबी "\ n \ r" की एक पंक्ति समाप्त हो जाएगी, लेकिन आपको प्रत्येक पंक्ति के बीच एक खाली स्ट्रिंग मिल जाएगी क्योंकि यह "\ n" वैध लाइन समाप्ति के रूप में और "\ r" समाप्त होने के रूप में "\ r" पर विचार करेगी अगली पंक्ति का। जैसे

>>> "foo\n\rbar".splitlines() 
['foo', '', 'bar'] 
+0

ध्यान दें कि "foo \ r \ nbar" .splitlines() रिटर्न ['foo', 'bar'] देता है। सीआरएलएफ/सीआर/एलएफ सभी मान्यता प्राप्त हैं लेकिन एलएफसीआर को 2 लाइनों के रूप में देखा जाता है। –

1
s = re.split(r"[~\r\n]+", string_to_split) 

यह आपको रों में स्ट्रिंग की एक सूची दे देंगे। स्ट्रिंग तरीकों के लिए डॉक बाहर

+1

हालांकि, अगर आपको लगता है ' 'एक \ n \ nb'' तीन तार में विभाजित किया जाना चाहिए ('' a'', ' ''', और ' 'b''), इस असफल हो जायेगी। –

+0

यह सच है, यह रिक्त रेखाओं को अनदेखा कर देगा। – tkerwin

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