2017-02-27 3 views
0

Ich bin mir nicht sicher, der Unterschied zwischen str.split ("list, ''") und str .split (Liste, '').Was ist der Unterschied zwischen str.split ("list, ''") und str.split (list, '')

Wenn ich versuche, die Codes von Learn Python The Hard Way gegeben zu bearbeiten ->

1) Blöcke mit str.split (Liste, ' ‚) #The richtige dachte ich.

ten_things = "Apples Oranges Crows Telephone Light Sugar" 
stuff = str.split(ten_things, ' ') 
more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"] 
print "Let's check our list now. \n%s" % ten_things 
while len(stuff) != 10: 
    next_one = more_stuff.pop() 
    print "Adding: ", next_one 
    stuff.append(next_one) 
    print "So there's %d items now." % len(stuff) 

print "There we go: ", stuff 

und das Ergebnis --->

Wait there's not 10 things in that list, let's fix that. 
Let's check our list now. 
Apples Oranges Crows Telephone Light Sugar 
Adding: Boy 
So there's 7 items now. 
Adding: Girl 
So there's 8 items now. 
Adding: Banana 
So there's 9 items now. 
Adding: Corn 
So there's 10 items now. 
There we go: ['Apples', 'Oranges', 'Crows', 'Telephone', 'Light', 'Sugar', 'Boy', 'Girl', 'Banana', 'Corn'] 

2) Blöcke mit str.split ("Liste ''"). # Es ist etwas falsch mit ihm sein kann.

ten_things = "Apples Oranges Crows Telephone Light Sugar" 
stuff = str.split("ten_things, ' '")  
more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"] 
print "Let's check our list now. \n%s" % ten_things 
while len(stuff) != 10: 
    next_one = more_stuff.pop() 
    print "Adding: ", next_one 
    stuff.append(next_one) 
    print "So there's %d items now." % len(stuff) 

und ich habe --->

Wait there's not 10 things in that list, let's fix that. 
Let's check our list now. 
Apples Oranges Crows Telephone Light Sugar 
Adding: Boy 
So there's 4 items now. #why add from 4th item? 
Adding: Girl 
So there's 5 items now. 
Adding: Banana 
So there's 6 items now. 
Adding: Corn 
So there's 7 items now. 
Adding: Frisbee 
So there's 8 items now. 
Adding: Song 
So there's 9 items now. 
Adding: Night 
So there's 10 items now. 
There we go: ['ten_things,', "'", "'", 'Boy', 'Girl', 'Banana', 'Corn', 'Frisbee', 'Song', 'Night'] 

Es gibt 6 Produkte in ten_things aber in Zeile 5 von 2) _result, warum Python Artikel aus dem 4. eines hinzugefügt? Verstehe auch nicht die Liste in der letzten Zeile gedruckt. Könnten Sie mir bitte den Grund für diesen Fehler nennen? Vielen Dank!

+4

Sie verwenden den exakt gleichen Code in Ihren beiden Beispielen - soll das ein Unterschied sein? –

+0

Ihr zweites Beispiel teilt die String-Literal 'list ',' durch das Standard-Split-Zeichen, das alle Leerzeichen ist. Sie können Strings auch wie bei jeder anderen Objektmethode aufteilen. In diesem Fall ist Ihr erster Aufruf 'ten_things.split ('')' und Ihr zweiter ist '" list "" ".split()' –

+0

Eigentlich bin ich neu hier. Vielen Dank für die Erinnerung! –

Antwort

0

Wenn Sie diesen Code haben:

ten_things = "Apples Oranges Crows Telephone Light Sugar" 
stuff = str.split(ten_things, ' ') 

dann stuff['Apples', 'Oranges', 'Crows', 'Telephone', 'Light', 'Sugar', 'Boy', 'Girl', 'Banana', 'Corn'] sein wird, wie man es erwarten würde.

Aber wenn Sie laufen:

ten_things = "Apples Oranges Crows Telephone Light Sugar" 
stuff = str.split("ten_things, ' '") 

Dann sind Sie nicht ten_things überhaupt verwenden, können Sie auch nur die zweite Zeile schreiben!

Sie spalten sich nur die Zeichenfolge "ten_things, ' '" Leerzeichen und wird am Ende mit stuff['ten_things,', "'", "'"] zu sein.

+0

Verstanden! Es endet einfach mit Sachen wie ['ten_things,', '' ',' ''], und das ist der Grund, warum Python von der vierten Seite an hinzufügt! Vielen Dank! –

0

split() Funktion Splits standardmäßig der Python wie folgt:

Wenn September nicht angegeben oder ist keine, eine andere Teilungsalgorithmus angewendet wird: Läufe von aufeinanderfolgenden Leerzeichen werden als einzelne Separator betrachtet, und das Ergebnis wird enthalten keine leeren Zeichenfolgen am Anfang oder Ende, wenn die Zeichenfolge führende oder nachfolgende Leerzeichen enthält.

Wenn Sie also keinen Parameter angeben, wird der Standardwert aufgerufen.

In Ihrem Code rufen Sie str.split(), das ist die str Klasse 'Methode - das erfordert eine Zeichenfolge zuerst (eine Instanz des Objekts str) zu arbeiten. Deshalb übergeben Sie 2 Parameter. dieser

So zu beantworten, ist der Unterschied:

l = "sfrsfs" 
str.split(l, '') # l is the string instance you'd like to split, '' the separator 

Wenn Sie jedoch diese nennen:

str.split("list, ''") 

Sie rufen Sie die split() Methode auf der Saite "list, ''" und split() Standardwerte auf den Standard Separator.

Beachten Sie auch, dass str.split(my_string, '') das gleiche ist wie my_string.split('').

+0

Bekam es! Vielen Dank! –

Verwandte Themen