Hoewel strings in Python on­ver­an­der­lijk zijn, kun je nieuwe strings maken op basis van bestaande strings. Met behulp van ver­schil­len­de methoden kun je tekens ver­wij­de­ren of vervangen om de gewenste string te maken.

Wat betekent on­ver­an­der­lijk­heid?

On­ver­an­der­lijk­heid betekent dat een object, zodra het is aan­ge­maakt, niet meer kan worden gewijzigd. In Python zijn strings on­ver­an­der­lijk. Wanneer u met behulp van methoden in Python tekens uit een string ver­wij­dert, maakt u in feite een nieuwe string aan met spe­ci­fie­ke elementen van de oor­spron­ke­lij­ke string. De oor­spron­ke­lij­ke string blijft echter on­ge­wij­zigd. De on­ver­an­der­lijk­heid van strings draagt bij aan een efficiënt ge­heu­gen­be­heer en voorkomt on­ver­wach­te re­sul­ta­ten bij het verwerken van strings.

Hoe in­di­vi­du­e­le tekens of een reeks tekens ver­wij­de­ren en vervangen

Om bepaalde tekens uit een te­ken­reeks te ver­wij­de­ren, kunt u str.replace() of re.sub() gebruiken met een reguliere expressie die de tekens of patronen ver­te­gen­woor­digt die u wilt ver­wij­de­ren.

str.replace()

De functie str.replace() wordt gebruikt om delen van een tekst te ver­wij­de­ren en te vervangen door een substring.

original_string = "Hello, Python#"
 
modified_string = original_string.replace('#', '!')
print(original_string)  # Output: Hello, Python#
print(modified_string)  # Output: Hello, Python!
Python

In het bo­ven­staan­de voorbeeld vervangt de methode replace() het teken ‘#’ in original_string door een uit­roep­te­ken ‘!’.

re.sub()

De functie re.sub() behoort tot de re-module in Python. Met deze functie kun je zoeken naar reguliere ex­pres­sies in strings en deze vervangen door andere tekens.

import re
original_string = "Hello, World! @#$%^&*"
modified_string = re.sub(r'[@#$%^&*]', '', original_string)
print(original_string)  # Output: Hello, World! @#$%^&*
print(modified_string)  # Output: Hello, World!
Python

Het patroon [@#$%^&*] is een reguliere expressie die over­een­komt met de speciale tekens @, #, $, %, ^, &,*. De functie re.sub() zoekt alle over­een­kom­sten van het patroon in de oor­spron­ke­lij­ke te­ken­reeks original_string en vervangt deze door een lege te­ken­reeks ''. In het bo­ven­staan­de voorbeeld hebben we het resultaat op­ge­sla­gen in de variabele modified_string en weer­ge­ge­ven.

Hoe alle tekens behalve letters ver­wij­de­ren

Je kunt ver­schil­len­de methoden gebruiken om alle letters uit een te­ken­reeks te ver­wij­de­ren. Hieronder bekijken we hoe je dit kunt doen met de volgende methoden: isalpha(), filter() en re.sub().

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub(r'[^a-zA-Z]', '', original_string)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

De reguliere expressie [^a-zA-Z] komt overeen met elk teken dat geen kleine letter of hoofd­let­ter is. Als gevolg hiervan bestaat modified_string alleen uit de letters uit de oor­spron­ke­lij­ke te­ken­reeks. Houd er rekening mee dat hierdoor ook de spaties tussen de letters worden ver­wij­derd.

isalpha()

original_string = "Hello, 123 World! @#$%^&*"
modified_string = ''.join(char for char in original_string if char.isalpha())
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

In dit voorbeeld hebben we een lijst­com­pre­hen­si­on gebruikt om elke letter in original_string te doorlopen. De methode isalpha() con­tro­leert of een teken een letter is. De letters worden ver­vol­gens in een nieuwe modified_string ingevoegd, terwijl alle andere tekens worden genegeerd.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isalpha, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

De methode str.isalpha() re­tour­neert True als het teken een letter is, anders re­tour­neert het False. De functie filter() maakt een fil­te­r­ob­ject aan dat alleen de tekens bevat die aan de voor­waar­de str.isalpha() voldoen. Hierdoor kunnen we alle tekens in original_string ver­wij­de­ren die geen letters zijn.

Hoe alle tekens behalve cijfers ver­wij­de­ren

Net als in de vorige voor­beel­den kunt u getallen scheiden met re.sub(), filter() en het numerieke equi­va­lent van isalpha(), isdigit().

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub('[^0-9]', '', original_string)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: 123
Python

Met 0-9 kunnen we een bereik de­fi­ni­ë­ren dat alle cijfers van 0 tot 9 omvat. Het kop­pel­te­ken - tussen 0 en 9 fungeert als een be­rei­k­ope­ra­tor. Het voor­af­gaan­de ^ betekent alle tekens die niet binnen het opgegeven bereik van 0 tot 9 vallen. Deze tekens worden vervangen door lege tekens met behulp van re.sub.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isdigit, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: 123
Python

De functie filter() in com­bi­na­tie met isdigit() kan getallen uit een te­ken­reeks filteren en de res­te­ren­de tekens ver­wij­de­ren. Als we deze samen gebruiken, toont de nieuwe te­ken­reeks ons de cijfers 123.

isdigit()

original_string = "Hello, 123 World"
modified_string = ''.join('*' if not char.isdigit() else char for char in original_string)
print(original_string) # Output: Hello, 123 World
print(modified_string) # Output: *******123******
Python

We kunnen de isdigit() ook gebruiken in een lijst­com­pre­hen­si­on om elke char in original_string te doorlopen. Tekens die geen decimale cijfers zijn (not char.isdigit() is waar) worden vervangen door een asterisk *, anders blijven ze hetzelfde.

Hoe tekens ver­wij­de­ren met translate()

De translate() is een in­ge­bouw­de functie in Python die wordt gebruikt voor ge­a­van­ceer­de te­ken­ver­van­ging en vertaling in strings. Het biedt een ef­fi­ci­ën­te manier om tekens te vervangen met behulp van een ver­taal­ta­bel.

original_string = "Hello, World! Remove vowels."
translation_table = str.maketrans(dict.fromkeys('aeiouAEIOU', '*'))
modified_string = original_string.translate(translation_table)
print(original_string) # Output: Hello, World! Remove vowels.
print(modified_string) # Output: H*ll*, W*rld! R*m*v* v*w*ls.
Python

In het bo­ven­staan­de voorbeeld hebben we de con­struc­tor str.maketrans() en dict.fromkeys() gebruikt om de ver­taal­ta­bel te maken. Hiermee wordt ge­spe­ci­fi­ceerd dat alle klinkers moeten worden vervangen door *. De tabel wordt ver­vol­gens toegepast op de oor­spron­ke­lij­ke te­ken­reeks om modified_string te krijgen.

Ga naar hoofdmenu