Teilen Sie die Zeichenfolge mithilfe eines Zeilenumbruchs mit Python

100

Ich muss die Zeichenfolge abgrenzen, die eine neue Zeile enthält. Wie würde ich es erreichen? Bitte beziehen Sie sich auf den folgenden Code.

Eingang:

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

Ausgabe gewünscht:

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

Ich habe die folgenden Ansätze ausprobiert:

1. output = data.split('\n')
2. output = data.split('/n')
3. output = data.rstrip().split('\n')
Hariharan
quelle
1
Was ist die Ausgabe von repr(data)?
Ashwini Chaudhary

Antworten:

186

str.splitlines Methode sollte Ihnen genau das geben.

>>> 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']
wim
quelle
6
Ein praktischer Teil str.splitlinesist, dass es das Finale entfernt, \nwenn es vorhanden ist. Dh, 'foo\nbar\n'.split() == ['foo', 'bar', '']währendstr.splitlines('foo\nbar\n') == ['foo', 'bar']
Matthew 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.splitStandardmäßig werden alle Leerzeichen geteilt. Wenn die tatsächliche Zeichenfolge andere Leerzeichen enthält, möchten Sie diese möglicherweise verwenden

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

Oder wie @Ashwini Chaudhary in den Kommentaren vorgeschlagen hat , können Sie verwenden

print(data.splitlines())
thefourtheye
quelle
Nur um auf der sichereren Seite zu sein .splitlines, was ist, wenn die Saiten Leerzeichen usw. haben
?
@ AshwiniChaudhary Yup, deshalb habe ich vorgeschlagen split("\n"). Ist splitlinesbesser als .split("\n")?
thefourtheye
4
Es funktioniert auch für \r\nund andere Arten von Liniengrenzen.
Ashwini Chaudhary
Wenn Ihre Zeichenfolge mit a endet \n, splitlines()wird sie ignoriert, während am Ende des Ergebnisses split("\n")eine zusätzliche leere Zeichenfolge ""angezeigt wird.
Moberg
10

Wenn Sie nur nach Zeilenumbrüchen teilen möchten , ist es besser, splitlines () zu verwenden :

Beispiel:

>>> 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']

Mit split () funktioniert es auch:

>>> 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']

Jedoch:

>>> data = """
... a, eqw, qwe
... v, ewr, err
... """
>>> data
'\na, eqw, qwe\nv, ewr, err\n'
>>> data.split()
['a,', 'eqw,', 'qwe', 'v,', 'ewr,', 'err']
KiraLT
quelle
scheint seltsam, dass Sie den Charakter nicht übergeben müssen, um sich wie zu teilen data.split('\n')?
7

Speziell für diesen Zweck gibt es eine Methode:

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

Bitte schön:

>>> data = """a,b,c
d,e,f
g,h,i
j,k,l"""
>>> data.split()  # split automatically splits through \n and space
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
>>> 
Spiele Brainiac
quelle