Ich möchte eine Zeichenfolge mit zwei Wörtern wie "Word1 Word2" mit split und partition aufteilen und die Wörter (mit einem for) separat drucken:
Partition:
Word1
Word2
Split:
Word1
Word2
Das ist mein Code:
print("Hello World")
name = raw_input("Type your name: ")
train = 1,2
train1 = 1,2
print("Separation with partition: ")
for i in train1:
print name.partition(" ")
print("Separation with split: ")
for i in train1:
print name.split(" ")
Das passiert:
Separation with partition:
('Word1', ' ', 'Word2')
('Word1', ' ', 'Word2')
Separation with split:
['Word1', 'Word2']
['Word1', 'Word2']
Ein Befehl wie name.split()
gibt eine Liste zurück. Sie könnten über diese Liste iterieren:
for i in name.split(" "):
print i
Denn das, was du geschrieben hast, nämlich
for i in train:
print name.split(" ")
führt den Befehl print name.split(" ")
zweimal aus (einmal für Wert i=1
und noch einmal für i=2
). Und zweimal wird das gesamte Ergebnis ausgedruckt:
['Word1', 'Word2']
['Word1', 'Word2']
Ähnliches gilt für partition
- es wird jedoch auch das Element zurückgegeben, das Sie ebenfalls teilen. In diesem Fall möchten Sie vielleicht etwas tun
print name.partition(" ")[0:3:2]
um Elemente 0
und 2
zurückzugeben. Alternativ können Sie tun
train = (0, 2,)
for i in train:
print name.partition(" ")[i]
Um die Elemente 0 und 2 in zwei aufeinanderfolgenden Durchläufen durch die Schleife zu drucken. Beachten Sie, dass dieser letztere Code ineffizienter ist, da er die Partition zweimal berechnet. Wenn es dich interessiert, könntest du schreiben
train = (0,2,)
part = name.partition(" ")
for i in train:
print part[i]
str.partition
gibt ein Tuple aus drei Elementen zurück. Zeichenfolge vor der Partitionierungszeichenfolge, der Partitionszeichenfolge selbst und dem Rest der Zeichenfolge. Also muss es so verwendet werden
first, middle, rest = name.partition(" ")
print first, rest
Um den str.split
zu verwenden, können Sie die aufgeteilten Strings einfach so drucken
print name.split(" ")
Wenn Sie es jedoch so nennen, wenn die Zeichenfolge mehr als ein Leerzeichen enthält, erhalten Sie mehr als zwei Elemente. Zum Beispiel
name = "Word1 Word2 Word3"
print name.split(" ") # ['Word1', 'Word2', 'Word3']
Wenn Sie nur einmal teilen möchten, können Sie als zweiten Parameter die Anzahl der zu teilenden Zeiten angeben
name = "Word1 Word2 Word3"
print name.split(" ", 1) # ['Word1', 'Word2 Word3']
Wenn Sie jedoch versuchen, sich anhand der Whitespace-Zeichen zu teilen, müssen Sie nicht " "
übergeben. Sie können es einfach tun
name = "Word1 Word2 Word3"
print name.split() # ['Word1', 'Word2', 'Word3']
Wenn Sie die Anzahl der Splits begrenzen möchten,
name = "Word1 Word2 Word3"
print name.split(None, 1) # ['Word1', 'Word2 Word3']
Hinweis: Verwenden Sie None
in split
oder geben Sie keine Parameter an. Dies geschieht
Zitieren aus der Split Dokumentation
Wenn "sep" nicht angegeben ist oder "None" ist, lautet ein anderer Aufteilungsalgorithmus angewendet: Läufe von aufeinanderfolgenden Leerzeichen werden als einzelnes .__ betrachtet. separator, und das Ergebnis enthält am Anfang keine leeren Zeichenfolgen oder enden, wenn die Zeichenfolge führenden oder nachgestellten Leerzeichen aufweist. Folglich, Aufteilen einer leeren Zeichenfolge oder einer Zeichenfolge, die nur aus Leerzeichen besteht mit einem None-Trenner gibt [] zurück.
So können Sie Ihr Programm so ändern
print "Partition:"
first, middle, rest = name.partition(" ")
for current_string in (first, rest):
print current_string
print "Split:"
for current_string in name.split(" "):
print current_string
Oder Sie können die str.join
-Methode wie folgt verwenden
print "Partition:"
first, middle, rest = name.partition(" ")
print "\n".join((first, rest))
print "Split:"
print "\n".join(name.split())
string = "Deepak ist ein guter Mensch und Preeti ist kein guter Mensch." // 'ist' Trennzeichen wird beim ersten Vorkommen gefunden print (string.partition ('is'))
Ausgabe:
('Deepak' ist ',' ein guter Mensch und Preeti ist kein guter Mensch. ')
Und im Split.... String = "Deepak ist ein guter Mensch und Preeti ist kein guter Mensch." // 'ist' Trennzeichen wird bei jedem Vorkommen gefunden print (string.partition ('is'))
Ausgabe:
('Deepak' ist ',' ein guter Mensch und Preeti ',' ist ',' kein guter Mensch. ')