# Sådan fjerner du et tegn fra en streng i Python

Selvom strenge er **uforanderlige** i Python, kan du oprette nye strenge på basis af eksisterende strenge. Ved hjælp af forskellige metoder kan du fjerne eller erstatte tegn for at oprette den ønskede streng.

## Hvad betyder uforanderlighed?

Uforanderlighed betyder, at når et objekt først er oprettet, kan det ikke længere ændres. I Python **er strenge uforanderlige**. Når du fjerner tegn fra en streng ved hjælp af metoder i Python, opretter du i virkeligheden en ny streng med bestemte elementer fra den oprindelige. Den oprindelige streng forbliver dog uændret. Strenge er uforanderlige, hvilket bidrager til en effektiv hukommelsesstyring og forhindrer uventede resultater, når man arbejder med strenge.

## Sådan fjerner og erstatter du enkelte tegn eller en række tegn

For at fjerne bestemte tegn fra en streng kan du bruge `str.replace()` eller `re.sub()` med et **regulært udtryk**, der repræsenterer de tegn eller mønstre, du vil fjerne.

### `str.replace()`

Funktionen `str.replace()` bruges til at fjerne dele af en tekst og erstatte dem med en delstreng.

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

I eksemplet ovenfor erstatter metoden `replace()` tegnet ‘#’ i `original_string` med et udråbstegn ‘!’.

### `re.sub()`

Funktionen `re.sub()` tilhører **re-modulet** i Python. Med denne funktion kan du søge efter regulære udtryk i strenge og erstatte dem med andre tegn.

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

Mønsteret `[@#$%^&*]` er et regulært udtryk, der matcher specialtegnene `@, #, $, %, ^, &,*`. Funktionen `re.sub()` søger efter **alle match af mønsteret** i den oprindelige streng `original_string` og erstatter dem med en tom streng `''`. I eksemplet ovenfor gemte vi resultatet i variablen `modified_string` og udskrev det.

## Sådan fjerner du alle tegn undtagen bogstaver

Du kan bruge forskellige metoder til at fjerne alle bogstaverne fra en streng. Nedenfor ser vi på, hvordan du gør dette med følgende metoder: `isalpha()`, `filter()` og `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
```

Det regulære udtryk `[^a-zA-Z]` matcher ethvert tegn, der ikke er et lille eller stort bogstav. Som følge heraf består `modified_string` kun af bogstaverne fra den oprindelige streng. Husk, at dette også fjerner mellemrummene mellem bogstaverne.

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

I dette eksempel har vi brugt en **listeforståelse** til at gentage hvert bogstav i `original_string`. Metoden `isalpha()` kontrollerer, om et tegn er et bogstav. Bogstaverne indsættes derefter i en ny `modified_string`, mens alle andre tegn ignoreres.

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

Metoden `str.isalpha()` returnerer `True`, hvis tegnet er et bogstav, ellers returnerer den `False`. Funktionen `filter()` opretter et **filterobjekt**, der kun indeholder de tegn, der opfylder betingelsen `str.isalpha()`. Dette giver os mulighed for at fjerne alle tegn i `original_string`, der ikke er bogstaver.

## Sådan fjerner du alle tegn undtagen tal

Som i de foregående eksempler kan du adskille tal ved hjælp af `re.sub()`, `filter()` og det numeriske ækvivalent til `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
```

Med `0-9` kan vi definere et interval, der omfatter alle cifre fra 0 til 9. Bindestregen `-` mellem 0 og 9 fungerer som en intervaloperator. Det foranstillede `^` betyder alle tegn, der ikke ligger inden for det angivne interval fra 0 til 9. Disse tegn erstattes af tomme tegn ved hjælp af `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
```

Funktionen `filter()` i kombination med `isdigit()` kan filtrere tal fra en streng og fjerne de resterende tegn. Ved at bruge disse sammen viser den nye streng os cifrene `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******
```

Vi kan også bruge `isdigit()` i en listeforståelse til at gentage hver `char` i `original_string`. Tegn, der ikke er decimaltal (`not char.isdigit()` er sandt), erstattes med en stjerne `*`, ellers forbliver de de samme.

## Sådan fjerner du tegn ved hjælp af `translate()`

`translate()` er en indbygget funktion i Python, der bruges til avanceret tegnudskiftning og oversættelse i strenge. Den giver en effektiv måde at udskifte tegn ved hjælp af en oversættelsestabel.

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

I eksemplet ovenfor brugte vi konstruktøren `str.maketrans()` og `dict.fromkeys()` til at oprette **oversættelsestabellen**. Dette angiver, at alle vokaler skal erstattes af `*`. Tabellen anvendes derefter på den oprindelige streng for at få `modified_string`.

Tip Når du filtrerer strenge, kan du bruge Python-strengindekset til at filtrere tegn på bestemte steder. For at formatere strenge på en bestemt måde kan du læse vores artikel om Python-strengformater.


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/fjernelse-af-tegn-fra-strenge-i-python/](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/fjernelse-af-tegn-fra-strenge-i-python/) for AI/LLM consumption.