# Hvordan fjerne et tegn fra en streng i Python

Selv om strenger er **uforanderlige** i Python, kan du opprette nye strenger på grunnlag av eksisterende strenger. Ved hjelp av forskjellige metoder kan du fjerne eller erstatte tegn for å opprette den strengen du ønsker.

## Hva betyr uforanderlighet?

Uforanderlighet betyr at når et objekt først er opprettet, kan det ikke lenger endres. I Python **er strenger uforanderlige**. Når du fjerner tegn fra en streng ved hjelp av metoder i Python, oppretter du i hovedsak en ny streng med bestemte elementer fra den opprinnelige. Den opprinnelige strengen forblir imidlertid uendret. Strengenes uforanderlighet bidrar til effektiv minnehåndtering og forhindrer uventede resultater ved håndtering av strenger.

## Hvordan fjerne og erstatte enkelttegn eller en rekke tegn

For å fjerne bestemte tegn fra en streng, kan du bruke `str.replace()` eller `re.sub()` med et **regulært uttrykk** som representerer tegnene eller mønstrene du vil fjerne.

### `str.replace()`

Funksjonen `str.replace()` brukes til å fjerne deler av en tekst og erstatte den 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 bytter metoden `replace()` ut tegnet «#» i `original_string` med et utropstegn «!».

### `re.sub()`

Funksjonen `re.sub()` tilhører **re-modulen** i Python. Med denne funksjonen kan du søke etter regulære uttrykk i strenger 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 uttrykk som samsvarer med spesialtegnene `@, #, $, %, ^, &,*`. Funksjonen `re.sub()` søker etter **alle treff av mønsteret** i den opprinnelige strengen `original_string` og erstatter dem med en tom streng `''`. I eksemplet ovenfor lagret vi resultatet i variabelen `modified_string` og skrev det ut.

## Hvordan fjerne alle tegn unntatt bokstaver

Du kan bruke forskjellige metoder for å fjerne alle bokstavene fra en streng. Nedenfor ser vi på hvordan du gjø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 uttrykket `[^a-zA-Z]` samsvarer med alle tegn som ikke er små eller store bokstaver. Som et resultat består `modified_string` kun av bokstavene fra den opprinnelige strengen. Husk at dette også fjerner mellomrommene mellom bokstavene.

### `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 eksemplet brukte vi en **listeforståelse** for å iterere gjennom hver bokstav i `original_string`. Metoden `isalpha()` sjekker om et tegn er en bokstav. Bokstavene blir deretter satt inn 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 en bokstav, ellers returnerer den `False`. Funksjonen `filter()` oppretter et **filterobjekt som** bare inneholder tegnene som oppfyller betingelsen `str.isalpha()`. Dette gjør at vi kan fjerne alle tegnene i `original_string` som ikke er bokstaver.

## Hvordan fjerne alle tegn unntatt tall

Som i de tidligere eksemplene kan du skille tallene ved å bruke `re.sub()`, `filter()` og det numeriske ekvivalenten 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 område som omfatter alle sifrene fra 0 til 9. Bindestrek `-` mellom 0 og 9 fungerer som en områdeoperator. Det foranstående `^` betyr alle tegn som ikke ligger innenfor det angitte området fra 0 til 9. Disse tegnene erstattes av tomme tegn ved hjelp av `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
```

Funksjonen `filter()` i kombinasjon med `isdigit()` kan filtrere tall fra en streng og fjerne de gjenværende tegnene. Ved å bruke disse sammen, viser den nye strengen oss tallene `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å bruke `isdigit()` i en listeforståelse for å iterere gjennom hver `char` i `original_string`. Tegn som ikke er desimaltall (`not char.isdigit()` er sant) vil bli erstattet med en stjerne `*`, ellers forblir de de samme.

## Hvordan fjerne tegn ved hjelp av `translate()`

`translate()` er en innebygd funksjon i Python som brukes til avansert tegnbytting og oversettelse i strenger. Den gir en effektiv måte å erstatte tegn ved hjelp av en oversettelsestabell.

```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 brukte vi konstruktøren `str.maketrans()` og `dict.fromkeys()` til å lage **oversettelsestabellen**. Dette spesifiserer at alle vokaler skal erstattes med `*`. Tabellen blir deretter brukt på den opprinnelige strengen for å få `modified_string`.

Tip Når du filtrerer strenger, kan du bruke Python-strengindeksen til å filtrere tegn på bestemte steder. For å formatere strenger på en bestemt måte, kan du ta en titt på artikkelen vår om Python-strengformater.


This is a markdown version of: [https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/fjerne-tegn-fra-strenger-i-python/](https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/fjerne-tegn-fra-strenger-i-python/) for AI/LLM consumption.