# Hoe een teken uit een tekenreeks verwijderen in Python

Hoewel strings in Python **onveranderlijk** zijn, kun je nieuwe strings maken op basis van bestaande strings. Met behulp van verschillende methoden kun je tekens verwijderen of vervangen om de gewenste string te maken.

## Wat betekent onveranderlijkheid?

Onveranderlijkheid betekent dat een object, zodra het is aangemaakt, niet meer kan worden gewijzigd. In Python **zijn strings onveranderlijk**. Wanneer u met behulp van methoden in Python tekens uit een string verwijdert, maakt u in feite een nieuwe string aan met specifieke elementen van de oorspronkelijke string. De oorspronkelijke string blijft echter ongewijzigd. De onveranderlijkheid van strings draagt bij aan een efficiënt geheugenbeheer en voorkomt onverwachte resultaten bij het verwerken van strings.

## Hoe individuele tekens of een reeks tekens verwijderen en vervangen

Om bepaalde tekens uit een tekenreeks te verwijderen, kunt u `str.replace()` of `re.sub()` gebruiken met een **reguliere expressie** die de tekens of patronen vertegenwoordigt die u wilt verwijderen.

### `str.replace()`

De functie `str.replace()` wordt gebruikt om delen van een tekst te verwijderen en te vervangen door een substring.

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

In het bovenstaande voorbeeld vervangt de methode `replace()` het teken ‘#’ in `original_string` door een uitroepteken ‘!’.

### `re.sub()`

De functie `re.sub()` behoort tot de **re-module** in Python. Met deze functie kun je zoeken naar reguliere expressies in strings en deze vervangen door andere tekens.

```Python
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!
```

Het patroon `[@#$%^&*]` is een reguliere expressie die overeenkomt met de speciale tekens `@, #, $, %, ^, &,*`. De functie `re.sub()` zoekt **alle overeenkomsten van het patroon** in de oorspronkelijke tekenreeks `original_string` en vervangt deze door een lege tekenreeks `''`. In het bovenstaande voorbeeld hebben we het resultaat opgeslagen in de variabele `modified_string` en weergegeven.

## Hoe alle tekens behalve letters verwijderen

Je kunt verschillende methoden gebruiken om alle letters uit een tekenreeks te verwijderen. Hieronder bekijken we hoe je dit kunt doen met de volgende methoden: `isalpha()`, `filter()` en `re.sub()`.

### `re.sub()`

```Python
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
```

De reguliere expressie `[^a-zA-Z]` komt overeen met elk teken dat geen kleine letter of hoofdletter is. Als gevolg hiervan bestaat `modified_string` alleen uit de letters uit de oorspronkelijke tekenreeks. Houd er rekening mee dat hierdoor ook de spaties tussen de letters worden verwijderd.

### `isalpha()`

```Python
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
```

In dit voorbeeld hebben we een **lijstcomprehension** gebruikt om elke letter in `original_string` te doorlopen. De methode `isalpha()` controleert of een teken een letter is. De letters worden vervolgens in een nieuwe `modified_string` ingevoegd, terwijl alle andere tekens worden genegeerd.

### `filter()`

```Python
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
```

De methode `str.isalpha()` retourneert `True` als het teken een letter is, anders retourneert het `False`. De functie `filter()` maakt een **filterobject** aan dat alleen de tekens bevat die aan de voorwaarde `str.isalpha()` voldoen. Hierdoor kunnen we alle tekens in `original_string` verwijderen die geen letters zijn.

## Hoe alle tekens behalve cijfers verwijderen

Net als in de vorige voorbeelden kunt u getallen scheiden met `re.sub()`, `filter()` en het numerieke equivalent van `isalpha()`, `isdigit()`.

### `re.sub()`

```Python
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
```

Met `0-9` kunnen we een bereik definiëren dat alle cijfers van 0 tot 9 omvat. Het koppelteken `-` tussen 0 en 9 fungeert als een bereikoperator. Het voorafgaande `^` 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()`

```Python
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
```

De functie `filter()` in combinatie met `isdigit()` kan getallen uit een tekenreeks filteren en de resterende tekens verwijderen. Als we deze samen gebruiken, toont de nieuwe tekenreeks ons de cijfers `123`.

### `isdigit()`

```Python
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******
```

We kunnen de `isdigit()` ook gebruiken in een lijstcomprehension 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 verwijderen met `translate()`

De `translate()` is een ingebouwde functie in Python die wordt gebruikt voor geavanceerde tekenvervanging en vertaling in strings. Het biedt een efficiënte manier om tekens te vervangen met behulp van een vertaaltabel.

```Python
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.
```

In het bovenstaande voorbeeld hebben we de constructor `str.maketrans()` en `dict.fromkeys()` gebruikt om de **vertaaltabel** te maken. Hiermee wordt gespecificeerd dat alle klinkers moeten worden vervangen door `*`. De tabel wordt vervolgens toegepast op de oorspronkelijke tekenreeks om `modified_string` te krijgen.

Tip Bij het filteren van strings kunt u de Python-stringindex gebruiken om tekens op bepaalde plaatsen te filteren. Om strings op een specifieke manier op te maken, kunt u ons artikel over Python-stringformaten raadplegen.


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/tekens-verwijderen-uit-strings-in-python/](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/tekens-verwijderen-uit-strings-in-python/) for AI/LLM consumption.