Die Manipulation von Zeichenfolgen ist für jeden erfahrenen Python-Entwickler unerlässlich, insbesondere beim Umgang mit realen Daten wie CSVs, Protokollen oder einfach unübersichtlichem Text. Manchmal möchten Sie anhand von Leerzeichen trennen, ein anderes Mal müssen Sie benutzerdefinierte Trennzeichen verarbeiten oder einfach nur ein Stück einer Zeichenfolge ohne viel Aufhebens herausgreifen. Python verfügt über eine ziemlich gute Reihe von Tools, um all dies zu erledigen – die meisten Leute sind wahrscheinlich mit vertraut str.split()
, aber es gibt eine Reihe von Tricks und anderen Funktionen, die das Leben einfacher machen können, insbesondere wenn es kompliziert wird. Dieser Leitfaden befasst sich mit neun verschiedenen Möglichkeiten zum Trennen von Zeichenfolgen, damit Sie beim nächsten Parsen von ungewöhnlichem Text oder beim Benötigen des richtigen Datenblocks nicht unvorbereitet sind. Es erwarten Sie schrittweise Beispiele, Anwendungsfälle und einige Tipps basierend auf realen Problemen.
Sehen Sie sich die offizielle API für
str.split
docs.python.org an.
So teilen Sie Zeichenfolgen in Python – einige Methoden, die tatsächlich funktionieren
Aufteilen bei Leerzeichen mitstr.split()
Standardmäßig werden beim Aufrufen split()
ohne Argumente Leerzeichen – Leerzeichen, Tabulatoren, Zeilenumbrüche usw.– abgeschnitten. Super praktisch für eine schnelle Bereinigung, wenn Ihr Text nicht besonders strukturiert ist, Sie aber trotzdem einzelne Wörter oder Token erhalten möchten.
s = "Python makes text processing easier" parts = s.split() print(parts) # ['Python', 'makes', 'text', 'processing', 'easier']
Ziemlich unkompliziert. Manchmal möchten Sie das Split-Ergebnis zur Wiederverwendung speichern, beispielsweise:
words = s.split() print(words[0]) # Python
Bei manchen Setups, insbesondere wenn Ihre Zeichenfolgen führende oder nachfolgende Leerzeichen aufweisen, kann sich dies manchmal seltsam verhalten – achten Sie also darauf.
Teilen mit einem bestimmten Trennzeichen
Wenn Ihr Text mit klaren Trennzeichen strukturiert ist, wie z. B.CSVs, split()
ist ein Trennzeichen Ihr Freund.
csv = "Alice, Bob, Charlie" names = csv.split(", ") print(names) # ['Alice', 'Bob', 'Charlie']
Dasselbe gilt für Registerkarten:
tsv = "2\tapple juice\t2.00" fields = tsv.split("\t") print(fields) # ['2', 'apple juice', '2.00']
Wenn Sie mit unregelmäßigen Trennzeichen oder mehreren Zeichen arbeiten, funktioniert dies auch gut, achten Sie jedoch auf inkonsistente Daten – das kann Sie manchmal ins Stolpern bringen.
Begrenzen Sie die Anzahl der Splits mitmaxsplit
Dies ist nützlich, wenn Sie die Zeichenfolge nur ein- oder zweimal und nicht in Millionen Teile aufteilen möchten. Zum Beispiel, wenn Sie einen Protokolleintrag haben und nur die ersten paar Teile benötigen.
log = "2025-01-15 08:45:23 INFO User logged in" date, time, level, message = log.split(maxsplit=3) print(date, time, level, message) # '2025-01-15' '08:45:23' 'INFO' 'User logged in'
Oder vielleicht:
"A B C".split(maxsplit=1) # ['A', 'B C']
Dies hilft, die Dinge übersichtlich zu halten, wenn Sie nur an den ersten Bits einer Zeichenfolge interessiert sind.
Von rechts geteilt mitrsplit()
Manchmal ist der letzte Teil einer Zeichenfolge der wichtigste – beispielsweise beim Extrahieren eines Dateinamens aus einem Pfad.rsplit()
erledigt die Aufgabe, indem es vom Ende aus aufteilt.
path = "/home/user/docs/tax.txt" directory, filename = path.rsplit("/", maxsplit=1) print(directory) # /home/user/docs print(filename) # tax.txt
Dies ist besonders praktisch beim Parsen von Dateipfaden oder URLs, bei denen der letzte Abschnitt variiert.
partition()
Für eine einzelne Teilung mit dem mitgelieferten Trenner verwenden
Wenn nur das erste Trennzeichen wichtig ist, partition()
wird die Zeichenfolge in ein Tupel aufgeteilt, das den vorherigen Teil, das Trennzeichen selbst und den Rest enthält. Es ist sauber und zuverlässig, um nur den ersten Teil zu erfassen.
s = "abcd qwrre qwedsasd zxcwsacds" head, sep, tail = s.partition(" ") print(head) # abcd print(tail) # qwrre qwedsasd zxcwsacds
Im Gegensatz zu split(maxsplit=1)
ergibt dies immer ein dreiteiliges Tupel mit dem Trennzeichen, falls gefunden.
Aufteilen in Zeilen mitsplitlines()
Ideal für mehrzeilige Texte, Protokolle oder Benutzereingaben mit Zeilenumbrüchen. So lässt sich ein großer Textblock ganz einfach in eine Liste von Zeilen umwandeln.
text = "Hello\nHow are you?\n" lines = text.splitlines() print(lines) # ['Hello', 'How are you?']
Und wenn Sie die Zeilenenden behalten möchten, splitlines(keepends=True)
tun Sie das. Ich weiß nicht warum, aber manchmal müssen diese Umbrüche für die weitere Verarbeitung erhalten bleiben.
Springen Sie in Regex-Splits mitre.split()
Hier wird es komplexer. Wenn Sie nach mehreren seltsamen Trennzeichen, Leerzeichen oder Mustern aufteilen müssen, ist das Modul „re“ Ihr Kumpel.
import re data = "Apple:Orange|Lemon-Date" parts = re.split(r"[:|-]", data) print(parts) # ['Apple', 'Orange', 'Lemon', 'Date']
Unübersichtliche Daten mit mehreren Trennzeichen gleichzeitig verarbeiten? Kein Problem. Hier ist ein Beispiel mit mehreren Trennzeichen und Leerzeichen:
messy = "Apple :::::3:Orange | 2|||Lemon --1 AND Date :: 10" pattern = r"\s*(?:[:|\-]+|AND)\s*" print(re.split(pattern, messy)) # ['Apple', '3', 'Orange', '2', 'Lemon', '1', 'Date', '10']
Machen Sie sich bereit – reguläre Ausdrücke können verwirrend sein, sind aber leistungsstark, wenn sie richtig verwendet werden.
Einfaches Aufteilen in Zeichen
Benötigen Sie jedes einzelne Zeichen? Wandeln Sie die Zeichenfolge einfach in eine Liste um:
chars = list("foobar") print(chars) # ['f', 'o', 'o', 'b', 'a', 'r']
Einfach, aber äußerst nützlich, wenn Sie Verarbeitungen oder Vergleiche auf Zeichenebene durchführen.
Mehrere Zeilen in Wörter aufteilen
Wenn Sie mehrere Zeilen Text bearbeiten und eine große Liste von Wörtern erstellen möchten, können Sie diese in einer Schleife oder mithilfe einer Listenableitung verarbeiten. Beispiel:
book_lines = ["the history of", "australian exploration from 1788 to 1888"] words = [] for line in book_lines: words.extend(line.split()) print(words) # ['the', 'history', 'of', 'australian', 'exploration', 'from', '1788', 'to', '1888']
Oder ein kurzer Einzeiler:
words = [w for line in book_lines for w in line.split()]
Dinge aus der realen Welt. Funktioniert ziemlich gut zum Tokenisieren von Text.
Kurztipps zum String-Splitting
split()
erstellt neue Listen; Ihre Zeichenfolgen bleiben gleich (Zeichenfolgen sind schließlich unveränderlich).- Weisen Sie immer die Ausgabe zu:
tokens = s.split()
. Andernfalls verschwenden Sie nur Code. - Verwenden Sie diese Option
split("\t")
beim Umgang mit TSV-Daten. - Wenn Sie nur den ersten Teil einer Zeichenfolge benötigen, sind sauberere Optionen möglich
partition()
.split(maxsplit=1)
- Auf dem Weg zu Dateipfaden?
rsplit()
funktioniert wunderbar bei der Extraktion nachfolgender Dateinamen. - Umgang mit mehrzeiligen Eingaben?
splitlines()
zur Rettung.
Zusammenfassung
Pythons Toolbox zum String-Splitting ist äußerst vielseitig. Egal, ob Sie CSVs, Protokolle oder einfach nur Benutzereingaben analysieren, es gibt in der Regel eine Methode oder Funktion, die Ihnen die Arbeit erleichtert. Das Üben dieser Techniken macht Ihren Code effizienter, sauberer und weniger frustrierend, wenn Sie mit kniffligen Textmustern arbeiten. Mit der Zeit können diese Tricks viel Kopfzerbrechen ersparen, insbesondere bei der Arbeit mit unübersichtlichen oder unvorhersehbaren Datenquellen.
Zusammenfassung
- Verwenden Sie es
split()
für einfache Leerzeichenaufteilungen oder strukturierte Daten wie CSVs. - Wählen Sie diese Option
rsplit()
für nachfolgende Teile wie Dateinamen in Pfaden. partition()
Für die Aufteilung nur einer Aufnahme verwenden – bequem und übersichtlich.splitlines()
funktioniert für mehrzeilige Blöcke, Protokolle oder Benutzereingaben.- Regex ist Ihr Freund für komplexe Trennzeichen mit re.split().
- Mit in Zeichen aufteilen
list()
. - Mehrere Zeilen verarbeiten? Führen Sie eine Schleife über Ihre Zeilen innerhalb
split()
einer Ableitung durch.
Zusammenfassung
Ehrlich gesagt kann die Beherrschung dieser Methoden im Umgang mit realen, unübersichtlichen Daten einen großen Unterschied machen. Nicht jede Aufteilung ist einfach, und manchmal braucht man reguläre Ausdrücke oder eine Kombination von Tricks. Wenn Sie sich damit vertraut gemacht haben, wird das Skripten von Python für die Textverarbeitung deutlich einfacher. Viel Erfolg beim Parsen dieser kniffligen Strings – Sie schaffen das.