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

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

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())

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

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

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']
>>> 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.