2016-07-29 10 views
-3

Ich bin vertraut mit der split Funktion und ich würde es als solche verwendet werden:Was bedeutet diese Anweisung (line, str) = str.split (" n", 1)?

str = "Line1-abcdef \nLine2-abc \nLine4-abcd" 
print str.split() 

Die oben würde dies zurück:

['Line1-abcdef', 'Line2-abc', 'Line4-abcd'] 

Einfach und leicht. Allerdings habe ich über ein Stück Code gekommen, dass diese Aussage hat:

(line, str) = str.split("\n", 1) 

Es gibt zwei Dinge, die ich nicht verstehe hier:

  1. Der zweite Parameter von split und was das tut. Ich sah here und es sagt die Anzahl der Zeilen gemacht. Was bedeutet das?

  2. split gibt einen iterierbaren Vektor zurück. Warum wird es (line, str) zugewiesen? Was bedeutet (line, str) hier?

+2

Wenn Sie neugierig sind, warum versuchst du es ** nicht? –

+0

Lesen Sie die Dokumentation, auf die Sie aufmerksam hingewiesen haben, insbesondere das Beispiel, das Sie verstehen werden. –

+0

Siehe [hier] (https://docs.python.org/2/library/stdtypes.html#str.split) für die Funktionsweise von Split. – khelwood

Antwort

5

Das zweite Argument maxsplit=1 bedeutet Stopp Spaltung, nachdem Sie den Separator \n einmal erfüllen.

Daher haben Sie nur zwei Teile, Ihre Linie und den Rest der Zeichenfolge.


Zum Beispiel:

str = 'This is one line\nThis is a second line\nThis is a third line' 
(line, str) = str.split('\n', 1) 
print(line) 
# 'This is one line' 
print(str) 
# 'This is a second line\nThis is a third line' 
+0

danke für das clearing –

+1

Es ist sehr bedauerlich, dass in python2 das maxsplit Argument nicht per Schlüsselwort übergeben werden kann. Dies ist in python3 behoben, wo man * str.split ('\ n', maxsplit = 1) 'schreiben kann und den Code viel selbstdokumentierter macht. – Bakuriu

0

Testing mit einer grundlegenden Zeichenfolge, how do you do ?. line wird das erste Element des Split bekommen, und str wird den Rest bekommen (wie wir nur einmal geteilt)