# Kā no Python valodas virknes izņemt rakstzīmi

Lai gan Python valodā virknes ir **nemainīgas**, jūs varat izveidot jaunas virknes, pamatojoties uz esošajām. Izmantojot dažādas metodes, jūs varat dzēst vai aizstāt rakstzīmes, lai izveidotu vēlamo virkni.

## Ko nozīmē nemainīgums?

Nemainīgums nozīmē, ka, kad objekts ir izveidots, to vairs nevar mainīt. Python valodā **virknes ir nemainīgas**. Kad izmantojat Python metodes, lai no virknes izdzēstu rakstzīmes, būtībā izveidojat jaunu virkni ar konkrētiem sākotnējās virknes elementiem. Sākotnējā virkne tomēr paliek nemainīga. Virkņu nemainīgums palīdz efektīvi pārvaldīt atmiņu un novērš negaidītus rezultātus, apstrādājot virknes.

## Kā izdzēst un aizstāt atsevišķus simbolus vai simbolu kopu

Lai no teksta virknes izdzēstu noteiktus simbolus, varat izmantot `str.replace()` vai `re.sub()` kopā ar **regulāro izteiksmi**, kas attēlo simbolus vai modeļus, kurus vēlaties izdzēst.

### `str.replace()`

`str.replace()` funkcija tiek izmantota, lai izdzēstu teksta daļas un aizstātu tās ar apakšvirkni.

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

Iepriekš minētajā piemērā metode `replace()` aizstāj simbolu „#” `original_string` ar izsaukuma zīmi „!”.

### `re.sub()`

Funkcija `re.sub()` pieder Python **re modulim**. Ar šo funkciju varat meklēt regulāros izteiksmes virknēs un aizstāt tos ar citiem simboliem.

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

Modelis `[@#$%^&*]` ir regulārs izteiksme, kas atbilst īpašajiem simboliem `@, #, $, %, ^, &,*`. Funkcija `re.sub()` meklē **visus modeļa saskaņojumus** sākotnējā virknē `original_string` un aizstāj tos ar tukšu virkni `''`. Iepriekšējā piemērā mēs saglabājām rezultātu mainīgajā `modified_string` un izvadījām to.

## Kā izdzēst visus simbolus, izņemot burtus

Jūs varat izmantot dažādas metodes, lai no virknes izdzēstu visas burtus. Turpinājumā mēs apskatīsim, kā to izdarīt, izmantojot šādas metodes: `isalpha()`, `filter()` un `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
```

Regulārais izteiksme `[^a-zA-Z]` atbilst jebkuram simbolam, kas nav mazais vai lielais burts. Rezultātā `modified_string` sastāv tikai no sākotnējās virknes burtiem. Ņemiet vērā, ka tas noņem arī atstarpes starp burtiem.

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

Šajā piemērā mēs izmantojām **saraksta izpratni**, lai atkārtotu katru burtu `original_string`. `isalpha()` metode pārbauda, vai rakstzīme ir burts. Tad burti tiek ievietoti jaunā `modified_string`, bet visi pārējie rakstzīmes tiek ignorēti.

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

`str.isalpha()` metode atgriež `True`, ja rakstzīme ir burts, citādi tā atgriež `False`. `filter()` funkcija izveido **filtrēšanas objektu**, kas satur tikai tās rakstzīmes, kas atbilst `str.isalpha()` nosacījumam. Tas ļauj mums noņemt visas rakstzīmes `original_string`, kas nav burti.

## Kā izdzēst visus simbolus, izņemot ciparus

Tāpat kā iepriekšējos piemēros, jūs varat atdalīt skaitļus, izmantojot `re.sub()`, `filter()` un skaitlisko ekvivalentu `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
```

Ar `0-9` varam definēt diapazonu, kas ietver visus ciparus no 0 līdz 9. Savienojums `-` starp 0 un 9 darbojas kā diapazona operators. Priekšā esošais `^` nozīmē visus simbolus, kas nav norādītajā diapazonā no 0 līdz 9. Šie simboli tiek aizstāti ar tukšiem simboliem, izmantojot `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
```

Funkcija `filter()` kopā ar `isdigit()` var filtrēt skaitļus no virknes un izdzēst atlikušos simbolus. Lietojot šīs funkcijas kopā, jaunajā virknē redzam ciparus `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******
```

Mēs varam izmantot arī `isdigit()` metodi saraksta izpratnē, lai atkārtotu katru `char` `original_string`. Simboli, kas nav decimālie cipari (`not char.isdigit()` ir patiesība), tiks aizstāti ar zvaigznīti `*`, citādi tie paliks nemainīgi.

## Kā izdzēst rakstzīmes, izmantojot `translate()`

`translate()` metode ir Python iebūvēta funkcija, ko izmanto sarežģītai rakstzīmju aizstāšanai un tulkošanai virknēs. Tā nodrošina efektīvu veidu, kā aizstāt rakstzīmes, izmantojot tulkojumu tabulu.

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

Iepriekš minētajā piemērā mēs izmantojām `str.maketrans()` konstruktoru un `dict.fromkeys()`, lai izveidotu **tulkošanas tabulu**. Tas nosaka, ka visas patskanis ir jāaizstāj ar `*`. Tad tabula tiek piemērota sākotnējai virknei, lai iegūtu `modified_string`.

Tip Filtrējot virknes, varat izmantot Python virknes indeksu, lai filtrētu rakstzīmes noteiktās vietās. Lai formatētu virknes konkrētā veidā, izlasiet mūsu rakstu par Python virkņu formātiem.


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/rakstzimju-dzesana-no-virknes-python-valoda/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/rakstzimju-dzesana-no-virknes-python-valoda/) for AI/LLM consumption.