Python, split zum Aufteilen einer durch Komma getrennten Zeichenkette, Entfernen von Leerzeichen und Umwandeln in eine Liste

Geschäft

Wenn eine durch Komma getrennte Zeichenkette in Python in eine Liste zerlegt wird, funktioniert split(), wenn keine Leerzeichen dazwischen sind. Wenn es Leerzeichen gibt, ist es sinnvoll, es mit strip() zu kombinieren, um die zusätzlichen Leerzeichen zu entfernen. Darüber hinaus ist die Verwendung der Listenauffassungsnotation eine intelligente Art zu schreiben.

In diesem Abschnitt wird zunächst das Folgende erläutert.

  • Zerlegen einer Zeichenkette mit einem angegebenen Trennzeichen und Rückgabe als Listesplit()
  • Entfernt zusätzliche Zeichen vom Anfang und Ende einer Zeichenkette.strip()
  • Notation des Listenverständnisses zur Anwendung von Funktionen und Methoden auf Listenelemente.

Sie zeigt auch, wie man eine Liste von durch Leerzeichen und Kommas getrennten Zeichenfolgen erstellt, indem man Leerzeichen entfernt, wie unten gezeigt.
'one, two, three'

Darüber hinaus werden wir Folgendes besprechen

  • Wie man sie als Liste von Zahlen erhält
  • Wie man mit join() eine Liste zusammenfügt und wieder zu einem String macht

split(): Zerlegen einer Zeichenkette mit einem angegebenen Trennzeichen und Rückgabe als Liste

Mit der Methode split() für Zeichenketten können Sie eine Zeichenkette mit einem bestimmten Begrenzungszeichen aufteilen und als Liste (Array) erhalten. Das angegebene Begrenzungszeichen kann durch das folgende Argument angegeben werden.sep

Wird das Argument sep weggelassen und kein Begrenzungszeichen angegeben, wird die Zeichenkette durch Leerzeichen getrennt und eine Liste zurückgegeben. Aufeinanderfolgende Leerzeichen und Tabulatoren teilen die Liste ebenfalls auf. Wenn Sie also eine Liste mit Tabulator-getrennten Zeichenketten erstellen wollen, können Sie split() ohne das Argument verwenden.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

Wenn im Argument sep ein Trennzeichen angegeben ist, wird die Liste durch diese Zeichenkette geteilt und eine Liste zurückgegeben.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

Im Falle einer durch Komma getrennten Zeichenkette gibt es kein Problem, wenn kein zusätzliches Leerzeichen vorhanden ist. Wenn Sie jedoch split() mit einem Komma als Trennzeichen für eine durch Komma + Leerzeichen getrennte Zeichenkette ausführen, erhalten Sie eine Liste von Zeichenketten mit Leerzeichen am Anfang.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Sie können ein Komma + Leerzeichen als Trennzeichen wie folgt verwenden, aber es funktioniert nicht, wenn die Anzahl der Leerzeichen in der ursprünglichen Zeichenfolge unterschiedlich ist.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

Die String-Methode strip(), die im Folgenden erläutert wird, kann zur Behandlung von zwei Leerzeichen verwendet werden.

strip(): Entfernt zusätzliche Zeichen vom Anfang und Ende einer Zeichenkette.

strip() ist eine Methode zum Entfernen zusätzlicher Zeichen am Anfang und Ende einer Zeichenkette.

Wenn das Argument weggelassen wird, wird eine neue Zeichenkette zurückgegeben, bei der die Leerzeichen entfernt wurden. Die ursprüngliche Zeichenkette selbst wird nicht verändert.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Wenn eine Zeichenkette als Argument angegeben wird, werden die in der Zeichenkette enthaltenen Zeichen entfernt.

s = '-+-one-+-'
print(s.strip('-+'))
# one

In diesem Fall werden die Leerzeichen nicht entfernt. Wenn Sie also auch Leerzeichen entfernen möchten, übergeben Sie eine Zeichenkette mit Leerzeichen als Argument, wie unten gezeigt.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() behandelt beide Enden, aber die folgenden Funktionen sind ebenfalls verfügbar.

  • lstrip():Prozess nur der Anfang
  • rstrip():Verarbeiten Sie nur das Ende der Zeile.

Notation des Listenverständnisses: Anwendung von Funktionen und Methoden auf Listenelemente

Wenn Sie eine Funktion oder Methode auf die Elemente einer Liste anwenden wollen, ist es klug, statt der for-Schleife die list comprehension-Notation zu verwenden, wenn Sie die Liste am Ende erhalten wollen.

Hier wenden wir strip() auf die Liste an, die wir durch Aufteilung der Zeichenkette mit split() erhalten haben. Die zusätzlichen Leerzeichen in einer kommagetrennten Zeichenkette mit Leerzeichen können entfernt werden, um eine Liste zu erstellen.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Wenn dies auf eine leere Zeichenkette angewandt wird, erhält man eine Liste mit einer einzigen leeren Zeichenkette als Element.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Wenn Sie für eine leere Zeichenkette eine leere Liste erhalten möchten, können Sie eine bedingte Verzweigung in der Notation für das Listenverständnis einrichten.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Wenn, wie oben beschrieben, ein durch Komma getrenntes Element fehlt, wird es bei der ersten Methode als leeres Zeichenkettenelement aufgeführt.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Wenn Sie die fehlenden Teile ignorieren wollen, können Sie eine bedingte Verzweigung in der Notation des Listenverständnisses einrichten.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Erhalten als Liste von Zahlen

Wenn Sie eine durch Komma getrennte Zahlenfolge als Zahlenliste statt als Zeichenkette erhalten möchten, wenden Sie int() oder float() an, um die Zeichenkette in eine Zahl in der Listenauffassungsnotation umzuwandeln.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): Eine Liste zusammenführen und als String ausgeben

Im umgekehrten Fall, wenn Sie eine Liste verknüpfen und durch ein bestimmtes Trennzeichen getrennte Zeichenfolgen erhalten möchten, verwenden Sie die Methode join().

Es ist leicht, einen Fehler zu machen, aber beachten Sie, dass join() eine String-Methode ist, keine Listenmethode. Die Liste wird als Argument angegeben.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

Sie können ihn in einer Zeile wie folgt schreiben.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Wenn Sie nur ein festes Begrenzungszeichen ändern wollen, ist es einfacher, es mit der Methode replace() zu ersetzen.

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three