# Kuidas eemaldada Pythonis märk stringist

Kuigi stringid on Pythonis **muutumatud**, saate olemasolevate stringide põhjal luua uusi stringe. Erinevaid meetodeid kasutades saate tähemärke eemaldada või asendada, et luua soovitud string.

## Mida tähendab muutumatus?

Muutumatus tähendab, et kui objekt on loodud, ei saa seda enam muuta. Pythonis **on stringid muutumatud**. Kui eemaldate stringist tähemärke Pythoni meetodite abil, loote sisuliselt uue stringi, mis sisaldab originaali teatud elemente. Originaalstring jääb siiski muutumatuks. Stringide muutumatus aitab kaasa tõhusale mäluhaldusele ja hoiab ära ootamatud tulemused stringide töötlemisel.

## Kuidas eemaldada ja asendada üksikuid märke või märkide kogumit

Teatud tähemärkide eemaldamiseks stringist võite kasutada `str.replace()` või `re.sub()` koos **regulaarse väljendiga**, mis esindab eemaldatavaid tähemärke või mustreid.

### `str.replace()`

Funktsiooni `str.replace()` kasutatakse teksti osade eemaldamiseks ja asendamiseks alamstringiga.

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

Eespool toodud näites asendab meetod `replace()` märgi „#” märgiga `original_string` märgi „!” asemel.

### `re.sub()`

Funktsioon `re.sub()` kuulub Pythonis **re moodulisse**. Selle funktsiooni abil saate otsida stringidest regulaarseid väljendeid ja asendada need teiste märkidega.

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

Muster `[@#$%^&*]` on regulaarne väljend, mis vastab erimärkidele `@, #, $, %, ^, &,*`. Funktsioon `re.sub()` otsib algse stringi `original_string` **kõik vasted mustrile** ja asendab need tühja stringiga `''`. Eespool toodud näites salvestasime tulemuse muutujasse `modified_string` ja väljastasime selle.

## Kuidas eemaldada kõik tähemärgid peale tähtede

Saate kasutada erinevaid meetodeid, et eemaldada kõik tähed stringist. Allpool vaatame, kuidas seda teha järgmiste meetoditega: `isalpha()`, `filter()` ja `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
```

Regulaaravaldis `[^a-zA-Z]` sobib kokku mis tahes märgiga, mis ei ole väike- ega suurtäht. Selle tulemusena koosneb `modified_string` ainult algse stringi tähtedest. Pange tähele, et see eemaldab ka tähtede vahelised tühikud.

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

Selles näites kasutasime **loendi mõistmist**, et läbida iga täht `original_string`. Meetod `isalpha()` kontrollib, kas märk on täht. Seejärel lisatakse tähed uude `modified_string`, samas kui kõik muud märgid jäetakse tähelepanuta.

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

Meetod `str.isalpha()` tagastab `True`, kui märk on täht, muidu tagastab `False`. Funktsioon `filter()` loob **filtriobjekti**, mis sisaldab ainult märki, mis vastavad tingimusele `str.isalpha()`. See võimaldab meil eemaldada kõik märgid `original_string`, mis ei ole tähed.

## Kuidas eemaldada kõik tähemärgid peale numbrite

Nagu eelmistes näidetes, võite numbreid eraldada numbritega `re.sub()`, `filter()` ja numbrite `isalpha()`, `isdigit()` numbrilise ekvivalendiga.

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

`0-9` abil saame määratleda vahemiku, mis hõlmab kõiki numbreid 0 kuni 9. Sidekriips `-` numbrite 0 ja 9 vahel toimib vahemiku operaatorina. Eelnev `^` tähendab kõiki märke, mis ei kuulu määratud vahemikku 0 kuni 9. Need märgid asendatakse tühjade märkidega, kasutades `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
```

Funktsioon `filter()` koos funktsiooniga `isdigit()` suudab stringist numbrid välja filtreerida ja ülejäänud tähemärgid eemaldada. Neid koos kasutades näitab uus string meile numbreid `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******
```

Me võime kasutada `isdigit()` meetodit ka loendi mõistmisel, et iterida läbi iga `char` `original_string`. Tähestikud, mis ei ole kümnendkohad (`not char.isdigit()` on tõene), asendatakse tärniga `*`, muidu jäävad need samaks.

## Kuidas eemaldada märke, kasutades `translate()`

`translate()` on Pythoni sisseehitatud funktsioon, mida kasutatakse tähemärkide asendamiseks ja tõlkimiseks stringides. See pakub tõhusat viisi tähemärkide asendamiseks tõlketabeli abil.

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

Eespool toodud näites kasutasime **tõlketabeli** loomiseks konstruktorit `str.maketrans()` ja `dict.fromkeys()`. See määrab, et kõik täishäälikud asendatakse `*`. Seejärel rakendatakse tabelit algse stringi suhtes, et saada `modified_string`.

Tip Stringide filtreerimisel saate kasutada Python string indexit, et filtreerida teatud kohtades olevaid märke. Stringide vormindamiseks kindlal viisil vaadake meie artiklit Python string formats.


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/taehtede-eemaldamine-stringidest-pythonis/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/taehtede-eemaldamine-stringidest-pythonis/) for AI/LLM consumption.