पायथन के साथ एक नईलाइन सीमांकक का उपयोग करके विभाजित स्ट्रिंग


101

मुझे उस स्ट्रिंग को सीमांकित करने की आवश्यकता है, जिसमें नई लाइन है। मैं इसे कैसे प्राप्त करूंगा? कृपया नीचे कोड देखें।

इनपुट:

data = """a,b,c
d,e,f
g,h,i
j,k,l"""

वांछित उत्पादन:

['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

मैंने नीचे के तरीकों की कोशिश की है:

1. output = data.split('\n')
2. output = data.split('/n')
3. output = data.rstrip().split('\n')

1
का आउटपुट क्या है repr(data)?
अश्विनी चौधरी

जवाबों:


187

str.splitlines विधि आपको ठीक वैसा ही देना चाहिए।

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

6
इसके बारे str.splitlinesमें एक सुविधाजनक बात यह है कि \nअगर यह मौजूद है तो यह फाइनल को हटा देगा । Ie, 'foo\nbar\n'.split() == ['foo', 'bar', '']जबकिstr.splitlines('foo\nbar\n') == ['foo', 'bar']
मैथ्यू Moisen

10
data = """a,b,c
d,e,f
g,h,i
j,k,l"""

print(data.split())       # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

str.splitडिफ़ॉल्ट रूप से, सभी व्हाट्सएप पात्रों द्वारा विभाजन किया जाता है। यदि वास्तविक स्ट्रिंग में कोई अन्य व्हाट्सएप वर्ण है, तो आप उपयोग करना चाह सकते हैं

print(data.split("\n"))   # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

या जैसा कि @ अश्विनी चौधरी ने टिप्पणियों में सुझाया है , आप उपयोग कर सकते हैं

print(data.splitlines())

बस सुरक्षित पक्ष के उपयोग पर होना चाहिए .splitlines, अगर तार में रिक्त स्थान हो, आदि
अश्विनी चौधरी

@ अश्विनीचौधरी युप, इसीलिए मैंने सुझाव दिया split("\n")। है splitlinesकी तुलना में बेहतर .split("\n")?
thefourtheye

4
यह \r\nऔर अन्य प्रकार की रेखा सीमाओं के लिए भी काम करेगा ।
अश्विनी चौधरी

यदि आपका स्ट्रिंग एक में समाप्त होता है \n, तो splitlines()इसे अनदेखा कर देगा , जबकि परिणाम के अंत में split("\n")एक अतिरिक्त खाली स्ट्रिंग होगा ""
Moberg

10

यदि आप केवल newlines द्वारा विभाजित करना चाहते हैं , तो इसके विभाजन का उपयोग करना बेहतर है () :

उदाहरण:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

विभाजन के साथ () यह भी काम करता है:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.split()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

तथापि:

>>> data = """
... a, eqw, qwe
... v, ewr, err
... """
>>> data
'\na, eqw, qwe\nv, ewr, err\n'
>>> data.split()
['a,', 'eqw,', 'qwe', 'v,', 'ewr,', 'err']

अजीब लगता है कि आपको चरित्र को पसंद करने के लिए विभाजित करने की आवश्यकता नहीं है data.split('\n')?

7

इस उद्देश्य के लिए विशेष रूप से एक विधि है:

data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.