Stringmanipulatie is essentieel voor elke ervaren Python-ontwikkelaar, vooral wanneer je werkt met echte data zoals CSV’s, logs of gewoon rommelige tekst. Soms wil je splitsen op basis van spaties, soms moet je aangepaste scheidingstekens gebruiken, of misschien gewoon een stukje van een string pakken zonder gedoe. Python heeft een behoorlijke set tools om dit allemaal te doen – de meeste mensen zijn waarschijnlijk bekend met str.split()
, maar er zijn een heleboel trucs en andere functies die het leven makkelijker kunnen maken, vooral wanneer het ingewikkeld wordt. Deze gids behandelt negen verschillende manieren om strings te splitsen, zodat je niet voor verrassingen komt te staan de volgende keer dat je vreemde tekst parseert of net dat ene stukje data nodig hebt. Verwacht stapsgewijze voorbeelden, use cases en een aantal tips gebaseerd op echte rommeligheid.
Bekijk de officiële API voor
str.split
: docs.python.org.
Hoe je strings in Python splitst – een paar manieren die echt werken
Splitsen op witruimte metstr.split()
Standaard worden split()
slices aangeroepen zonder args op witruimte – spaties, tabs, nieuwe regels, noem maar op. Superhandig voor snelle opruiming als je tekst niet supergestructureerd is, maar je toch individuele woorden of tokens wilt gebruiken.
s = "Python makes text processing easier" parts = s.split() print(parts) # ['Python', 'makes', 'text', 'processing', 'easier']
Vrij eenvoudig. Soms wil je het splitsingsresultaat opslaan voor hergebruik, zoals:
words = s.split() print(words[0]) # Python
Bij sommige opstellingen, vooral als je snaren voorloop- of eindspaties hebben, kan dit soms vreemd gedrag vertonen. Houd dit dus in de gaten.
Splitsen met behulp van een specifiek scheidingsteken
Als uw tekst is gestructureerd met duidelijke scheidingstekens, zoals in CSV-bestanden, split()
is een scheidingsteken een goede optie.
csv = "Alice, Bob, Charlie" names = csv.split(", ") print(names) # ['Alice', 'Bob', 'Charlie']
Hetzelfde geldt voor tabbladen:
tsv = "2\tapple juice\t2.00" fields = tsv.split("\t") print(fields) # ['2', 'apple juice', '2.00']
Als u te maken hebt met onregelmatige scheidingstekens of meerdere tekens, werkt dit ook goed. Pas echter wel op voor inconsistente gegevens: dat kan soms voor problemen zorgen.
Beperk het aantal splitsingen metmaxsplit
Deze is handig als je de string maar één of twee keer wilt splitsen, en niet in een miljoen stukjes. Bijvoorbeeld wanneer je een logboekitem hebt en alleen de eerste paar delen wilt.
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'
Of misschien:
"A B C".split(maxsplit=1) # ['A', 'B C']
Dit helpt om alles overzichtelijk te houden als je alleen geïnteresseerd bent in de eerste stukjes van een string.
Van rechts gesplitst metrsplit()
Soms is het laatste deel van een string het belangrijkste, bijvoorbeeld bij het extraheren van een bestandsnaam uit een pad.rsplit()
doet de taak door vanaf het einde te splitsen.
path = "/home/user/docs/tax.txt" directory, filename = path.rsplit("/", maxsplit=1) print(directory) # /home/user/docs print(filename) # tax.txt
Dit is vooral handig bij het parseren van bestandspaden of URL’s waarvan het laatste gedeelte varieert.
Te gebruiken partition()
voor een enkele splitsing met de meegeleverde scheider
Als alleen de eerste scheidingsteken van belang is, partition()
splitst de string in een tuple met het voorgaande deel, het scheidingsteken zelf en de rest. Het is overzichtelijk en betrouwbaar om alleen het eerste deel te pakken.
s = "abcd qwrre qwedsasd zxcwsacds" head, sep, tail = s.partition(" ") print(head) # abcd print(tail) # qwrre qwedsasd zxcwsacds
In tegenstelling tot split(maxsplit=1)
geeft dit altijd een driedelig tuple met het scheidingsteken als dat gevonden wordt.
Verdeeld in regels metsplitlines()
Ideaal voor het werken met tekst van meerdere regels, logs of gebruikersinvoer met regeleinden. Het maakt het omzetten van een groot tekstblok naar een lijst met regels vrij eenvoudig.
text = "Hello\nHow are you?\n" lines = text.splitlines() print(lines) # ['Hello', 'How are you?']
En als je de regeleinden wilt behouden, splitlines(keepends=True)
doe dat dan. Ik weet niet waarom, maar soms wil je die regeleinden behouden voor verdere verwerking.
Spring in regex-splitsingen metre.split()
Dit is waar het ingewikkelder wordt. Als je op meerdere vreemde scheidingstekens, spaties of patronen moet splitsen, is de re-module je beste vriend.
import re data = "Apple:Orange|Lemon-Date" parts = re.split(r"[:|-]", data) print(parts) # ['Apple', 'Orange', 'Lemon', 'Date']
Verwerkt u rommelige gegevens met meerdere scheidingstekens tegelijk? Geen probleem. Hier is een voorbeeld met meerdere scheidingstekens en witruimte:
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']
Houd je vast: regex kan verwarrend zijn, maar als je het goed gebruikt, is het een krachtig taalgebruik.
Gemakkelijk op te splitsen in karakters
Heb je elk afzonderlijk teken nodig? Converteer de string dan gewoon naar een lijst:
chars = list("foobar") print(chars) # ['f', 'o', 'o', 'b', 'a', 'r']
Simpel, maar superhandig als je tekens op karakterniveau wilt verwerken of vergelijken.
Meerdere regels in woorden splitsen
Als je met meerdere tekstregels werkt en een lange woordenlijst wilt maken, is het handig om ze te doorlopen of een lijstbegripsoefening te doen. Bijvoorbeeld:
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']
Of een korte one-liner:
words = [w for line in book_lines for w in line.split()]
Praktijkvoorbeelden. Werkt prima voor het tokeniseren van tekst.
Snelle tips voor het splitsen van snaren
split()
maakt nieuwe lijsten aan; uw strings blijven hetzelfde (strings zijn immers onveranderlijk).- Wijs altijd de uitvoer toe:
tokens = s.split()
. Anders verspil je alleen maar code. - Te gebruiken
split("\t")
bij het werken met TSV-gegevens. - Wanneer u alleen het eerste deel van een string nodig hebt,
partition()
ofsplit(maxsplit=1)
wanneer u nettere opties zoekt. - Op zoek naar bestandspaden?
rsplit()
Doet wonderen voor het extraheren van afsluitende bestandsnamen. - Werkt u met invoer van meerdere regels?
splitlines()
Dan bent u bij ons aan het juiste adres.
Afronding
Het blijkt dat Python’s toolbox voor het splitsen van strings behoorlijk veelzijdig is. Of je nu CSV’s, logs of gewoon het opschonen van gebruikersinvoer parseert, er is meestal een methode of functie die het makkelijker maakt. Door deze technieken te oefenen, wordt je code efficiënter, overzichtelijker en minder frustrerend bij het werken met lastige tekstpatronen. Na verloop van tijd kunnen deze trucs je veel hoofdpijn besparen, vooral bij het werken met rommelige of onvoorspelbare gegevensbronnen.
Samenvatting
- Te gebruiken
split()
voor eenvoudige witruimtesplitsingen of gestructureerde gegevens zoals CSV’s. - Kies deze optie
rsplit()
voor afsluitende delen, zoals bestandsnamen in paden. - Te gebruiken
partition()
voor het splitsen in één keer — handig en duidelijk. splitlines()
Werkt voor blokken met meerdere regels, logboeken of gebruikersinvoer.- Regex is uw vriend voor complexe scheidingstekens met re.split().
- Opgesplitst in tekens met
list()
. - Heb je meerdere regels? Loop over je regels heen met
split()
een begripsoefening.
Afronding
Eerlijk gezegd kan het beheersen van deze methoden een groot verschil maken bij het werken met echte, rommelige data. Niet elke splitsing is eenvoudig, en soms heb je regex of een combinatie van trucs nodig. Als je hier vertrouwd mee raakt, zal het scripten van Python voor tekstverwerking veel minder pijnlijk aanvoelen. Veel succes met het parsen van die lastige strings – je kunt het.