HOWTO · Python

Wie konvertiert man eine Zeichenkette in Python in eine Liste

Eine Zeichenkette kann in Python mit list(), split(), ast.literal_eval() und List Comprehensions in eine Liste umgewandelt werden.

Auf dieser Seite

Bestimme die Methode danach, welche Elemente die Ergebnisliste enthalten soll. Verwende list(text) für einzelne Zeichen, text.split() für Wörter oder getrennte Werte, ast.literal_eval(text) für vertrauenswürdige Python-Literale und eine List Comprehension zum Filtern oder Umwandeln. Verwende eval() niemals für unkontrollierte Eingaben, weil beliebiger Python-Code ausgeführt werden kann.

Eine Zeichenkette mit list() in Zeichen umwandeln

list() durchläuft eine Zeichenkette und erzeugt für jedes Unicode-Zeichen ein Listenelement. Die Funktion zerlegt einen Satz nicht in Wörter.

text = "Hello"
characters = list(text)
print(characters)

Ausgabe:

['H', 'e', 'l', 'l', 'o']

Verwende dies, wenn eine zeichenweise Verarbeitung beabsichtigt ist. Eine leere Zeichenkette wird zu []; Leerzeichen und Satzzeichen bleiben Zeichen und sind keine Trennzeichen.

Wörter oder getrennte Werte mit split() aufteilen

Für Wörter, die durch beliebiges Leerzeichen getrennt sind, rufe split() ohne Argument auf. Aufeinanderfolgende Leerzeichen gelten als ein Trennzeichen; führende und nachgestellte Leerzeichen werden ignoriert. Übergib ein Trennzeichen ausdrücklich, wenn das Eingabeformat eines definiert.

sentence = "Convert this string to a list"
words = sentence.split()
print(words)

Ausgabe:

['Convert', 'this', 'string', 'to', 'a', 'list']

Für kommagetrennte Daten verwende split(",") und entferne bei erlaubten Leerzeichen nach Kommas mit strip() den Rand jeder Feldzeichenkette:

text = "red, green, blue"
colors = [item.strip() for item in text.split(",")]
print(colors)

Ausgabe:

['red', 'green', 'blue']

Mit einem expliziten Trennzeichen bleiben leere Felder erhalten, und ein fehlendes Trennzeichen lässt die gesamte Zeichenkette als ein Element. Enthält die Eingabe CSV mit Anführungszeichen und Kommas darin, verwende das Modul csv statt split() zu erweitern.

Verwende maxsplit, wenn nur die ersten Trennzeichen Grenzen erzeugen sollen. Mit maxsplit=1 bleibt der Rest im zweiten Element:

text = "red,green,blue"
first_two = text.split(",", maxsplit=1)
print(first_two)

Ausgabe:

['red', 'green,blue']

Text parsen, der eine Liste darstellt

Wenn die Zeichenkette eine Python-Literaldarstellung wie "[1, 2, 3]" ist, verwende ast.literal_eval(). Die Funktion akzeptiert Literale und Container, führt aber keine beliebigen Ausdrücke aus; sie erwartet dennoch gültigen, vertrauenswürdigen Text und kann bei fehlerhaftem Inhalt ValueError oder SyntaxError auslösen.

import ast

text = "[1, 2, 3]"
values = ast.literal_eval(text)
if not isinstance(values, list):
    raise TypeError("expected a list literal")
print(values)

Ausgabe:

[1, 2, 3]

Nimm nicht an, dass jedes erfolgreiche Parsen eine Liste liefert: Eine Zeichenkette wie "(1, 2)" ergibt ein Tupel, weshalb die Typprüfung nützlich ist. Für JSON-Text verwende json.loads(); Python-Literalsyntax und JSON sind ähnlich, aber nicht identisch. Ersetze literal_eval() für unkontrollierte Eingaben niemals durch eval().

Elemente mit einer List Comprehension filtern

Verwende eine Comprehension, wenn die Umwandlung eine Regel enthält, etwa nur Ziffern zu behalten oder die Groß-/Kleinschreibung zu ändern:

text = "P y 3"
digits = [char for char in text if char.isdigit()]
print(digits)

Ausgabe:

['3']

Der Ausdruck kann auch jedes Element umwandeln, zum Beispiel [char.lower() for char in text if char.isalpha()]. Eine Comprehension arbeitet über Zeichen, sofern du nicht zuerst split() aufrufst; kombiniere beide, wenn Wörter normalisiert werden sollen.

Die passende Methode wählen

Verwende list() für Zeichen, split() für bekannte Trennzeichen, ast.literal_eval() für ein geprüftes Python-Literalformat und eine Comprehension zum Filtern oder Umwandeln. Validiere externe Eingaben vor dem Parsen und wähle für CSV oder JSON einen formatspezifischen Parser. Diese Unterscheidungen verhindern den häufigen Fehler, eine Zeichenliste zu erhalten, wenn Wörter gemeint waren, oder Eingaben auszuführen, die nur Daten sein sollten.