it-swarm.com.de

Python Partition und Split

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

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]
15
Floris

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

Die Methode partition () teilt die Zeichenfolge beim ersten Vorkommen des Trennzeichens auf und gibt einen Tupel zurück, der den Teil vor dem Trennzeichen, das Trennzeichen und den Teil nach dem Trennzeichen enthält.

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

Vereinfacht gesagt, teilt split den String bei jedem Vorkommen des angegebenen Arguments, während partition den String nur beim ersten Vorkommen des angegebenen Arguments teilt und einen 3-Tuple mit dem angegebenen Argument als Mittelwert zurückgibt.

0
Preeti Duhan