# 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 [@#$%^&amp;*] er et regulært uttrykk som samsvarer med spesialtegnene @, #, $, %, ^, &amp;,*. 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.