# Kaip pašalinti simbolį iš eilutės Python kalboje

Nors Python kalboje stygos yra **nekintamos**, galite kurti naujas stygas remiantis esamomis. Naudodami įvairius metodus, galite pašalinti arba pakeisti simbolius, kad sukurtumėte norimą stygą.

## Ką reiškia nekintamumas?

Nekintamumas reiškia, kad kartą sukurtas objektas nebegali būti keičiamas. Python kalboje **eilutės yra nekintamos**. Kai Python kalboje naudojant metodus pašalinate simbolius iš eilutės, iš esmės sukuriate naują eilutę su tam tikrais originalo elementais. Tačiau originalo eilutė lieka nepakitusi. Eilutės nekintamumas padeda efektyviai valdyti atmintį ir išvengti netikėtų rezultatų dirbant su eilutėmis.

## Kaip pašalinti ir pakeisti atskirus simbolius arba simbolių rinkinį

Norėdami pašalinti tam tikrus simbolius iš eilutės, galite naudoti `str.replace()` arba `re.sub()` su **reguliariąja išraiška**, kuri atitinka simbolius arba modelius, kuriuos norite pašalinti.

### `str.replace()`

`str.replace()` funkcija naudojama tekstui ištrinti ir pakeisti jį dalimi.

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

Pateiktame pavyzdyje `replace()` metodas pakeičia simbolį „#“ `original_string` į šauktuką „!“.

### `re.sub()`

Funkcija `re.sub()` priklauso Python kalbos **re moduliui**. Naudodami šią funkciją, galite ieškoti reguliariųjų išraiškų eilutėse ir pakeisti jas kitais simboliais.

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

Šablonas `[@#$%^&*]` yra reguliarusis išraiška, atitinkanti specialiuosius simbolius `@, #, $, %, ^, &,*`. Funkcija `re.sub()` ieško **visų šablono atitikmenų** pradiniame strype `original_string` ir pakeičia juos tuščiu strypu `''`. Pateiktame pavyzdyje rezultatą išsaugojome kintamajame `modified_string` ir išvedėme jį.

## Kaip pašalinti visus simbolius, išskyrus raides

Galite naudoti įvairius metodus, kad pašalintumėte visas raides iš eilutės. Toliau pažiūrėsime, kaip tai padaryti naudojant šiuos metodus: `isalpha()`, `filter()` ir `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
```

Reguliari išraiška `[^a-zA-Z]` atitinka bet kurį simbolį, kuris nėra mažoji arba didžioji raidė. Todėl `modified_string` sudaro tik raidės iš pradinio žodžio. Atminkite, kad taip taip pat pašalinami tarpai tarp raidžių.

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

Šiame pavyzdyje naudojome **sąrašo supratimą**, kad peržiūrėtume kiekvieną raidę `original_string`. `isalpha()` metodas patikrina, ar simbolis yra raidė. Raidės įterpiamos į naują `modified_string`, o visi kiti simboliai ignoruojami.

### `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()` metodas grąžina `True`, jei simbolis yra raidė, kitais atvejais grąžina `False`. `filter()` funkcija sukuria **filtro objektą**, kuriame yra tik simboliai, atitinkantys `str.isalpha()` sąlygą. Tai leidžia mums pašalinti visus simbolius `original_string`, kurie nėra raidės.

## Kaip pašalinti visus simbolius, išskyrus skaičius

Kaip ir ankstesniuose pavyzdžiuose, skaičius galite atskirti naudodami `re.sub()`, `filter()` ir skaitmeninį ekvivalentą `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
```

Naudodami `0-9`, galime apibrėžti intervalą, apimantį visus skaitmenis nuo 0 iki 9. Brūkšnys `-` tarp 0 ir 9 veikia kaip intervalo operatorius. Prieš tai esantis `^` reiškia visus simbolius, kurie nėra nurodytame intervale nuo 0 iki 9. Šie simboliai pakeičiami tuščiais simboliais naudojant `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()` kartu su `isdigit()` gali filtruoti skaičius iš eilutės ir pašalinti likusius simbolius. Naudojant jas kartu, naujoji eilutė rodo mums skaitmenis `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******
```

Mes taip pat galime naudoti `isdigit()` metodą sąrašo supratime, kad kartotume kiekvieną `char` iš `original_string`. Simboliai, kurie nėra dešimtainiai skaitmenys (`not char.isdigit()` yra tiesa), bus pakeisti žvaigždute `*`, kitais atvejais jie liks nepakitę.

## Kaip pašalinti simbolius naudojant `translate()`

`translate()` metodas yra Python įdiegta funkcija, skirta pažangiam simbolių keitimui ir vertimui eilutėse. Ji suteikia veiksmingą būdą keisti simbolius naudojant vertimų lentelę.

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

Pateiktame pavyzdyje **vertimo lentelę** sukūrėme naudodami konstruktorių `str.maketrans()` ir `dict.fromkeys()`. Tai reiškia, kad visos balsės turi būti pakeistos į `*`. Tada lentelė pritaikoma pradiniam žodžių junginiui, kad gautume `modified_string`.

Tip Filtruodami eilutes, galite naudoti Python eilutės indeksą tam tikrose vietose esančioms raidėms filtruoti. Norėdami formatuoti eilutes tam tikru būdu, peržiūrėkite mūsų straipsnį apie Python eilutės formatus.


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/simboliu-pasalinimas-is-python-styginiu/](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/simboliu-pasalinimas-is-python-styginiu/) for AI/LLM consumption.