Nors Python kalboje stygos yra ne­kin­ta­mos, galite kurti naujas stygas remiantis esamomis. Naudodami įvairius metodus, galite pašalinti arba pakeisti simbolius, kad su­kur­tu­mė­te norimą stygą.

Ką reiškia ne­kin­ta­mu­mas?

Ne­kin­ta­mu­mas reiškia, kad kartą sukurtas objektas nebegali būti keičiamas. Python kalboje eilutės yra ne­kin­ta­mos. Kai Python kalboje naudojant metodus pa­ša­li­na­te simbolius iš eilutės, iš esmės sukuriate naują eilutę su tam tikrais originalo ele­men­tais. Tačiau originalo eilutė lieka ne­pa­ki­tu­si. Eilutės ne­kin­ta­mu­mas padeda efek­ty­viai 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 re­gu­lia­rią­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.

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

Pa­teik­ta­me 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 re­gu­lia­rių­jų išraiškų eilutėse ir pakeisti jas kitais sim­bo­liais.

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

Šablonas [@#$%^&*] yra re­gu­lia­ru­sis išraiška, ati­tin­kan­ti spe­cia­liuo­sius simbolius @, #, $, %, ^, &,*. Funkcija re.sub() ieško visų šablono ati­tik­me­nų pra­di­nia­me strype original_string ir pakeičia juos tuščiu strypu ''. Pa­teik­ta­me pavyzdyje rezultatą iš­sau­go­jo­me kin­ta­ma­ja­me modified_string ir išvedėme jį.

Kaip pašalinti visus simbolius, išskyrus raides

Galite naudoti įvairius metodus, kad pa­ša­lin­tu­mė­te visas raides iš eilutės. Toliau pa­žiū­rė­si­me, kaip tai padaryti naudojant šiuos metodus: isalpha(), filter() ir re.sub().

re.sub()

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
Python

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­ša­li­na­mi tarpai tarp raidžių.

isalpha()

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
Python

Šiame pavyzdyje naudojome sąrašo supratimą, kad per­žiū­rė­tu­me kiekvieną raidę original_string. isalpha() metodas patikrina, ar simbolis yra raidė. Raidės įter­pia­mos į naują modified_string, o visi kiti simboliai ig­no­ruo­ja­mi.

filter()

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
Python

str.isalpha() metodas grąžina True, jei simbolis yra raidė, kitais atvejais grąžina False. filter() funkcija sukuria filtro objektą, kuriame yra tik simboliai, ati­tin­kan­tys 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 anks­tes­niuo­se pa­vyz­džiuo­se, skaičius galite atskirti naudodami re.sub(), filter() ir skait­me­ni­nį ek­vi­va­len­tą isalpha(), isdigit().

re.sub()

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
Python

Naudodami 0-9, galime apibrėžti intervalą, apimantį visus skait­me­nis nuo 0 iki 9. Brūkšnys - tarp 0 ir 9 veikia kaip intervalo ope­ra­to­rius. Prieš tai esantis ^ reiškia visus simbolius, kurie nėra nu­ro­dy­ta­me intervale nuo 0 iki 9. Šie simboliai pa­kei­čia­mi tuščiais sim­bo­liais naudojant re.sub.

filter()

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
Python

Funkcija filter() kartu su isdigit() gali filtruoti skaičius iš eilutės ir pašalinti likusius simbolius. Naudojant jas kartu, naujoji eilutė rodo mums skait­me­nis 123.

isdigit()

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******
Python

Mes taip pat galime naudoti isdigit() metodą sąrašo supratime, kad kartotume kiekvieną charoriginal_string. Simboliai, kurie nėra de­šim­tai­niai skait­me­nys (not char.isdigit() yra tiesa), bus pakeisti žvaigž­du­te *, 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 veiks­min­gą būdą keisti simbolius naudojant vertimų lentelę.

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

Pa­teik­ta­me pavyzdyje vertimo lentelę sukūrėme naudodami konst­ruk­to­rių str.maketrans() ir dict.fromkeys(). Tai reiškia, kad visos balsės turi būti pakeistos į *. Tada lentelė pri­tai­ko­ma pradiniam žodžių junginiui, kad gautume modified_string.

Go to Main Menu