Lai gan Python valodā virknes ir ne­mai­nī­gas, jūs varat izveidot jaunas virknes, pa­ma­to­jo­ties uz esošajām. Iz­man­to­jot dažādas metodes, jūs varat dzēst vai aizstāt rakstzī­mes, lai izveidotu vēlamo virkni.

Ko nozīmē ne­mai­nī­gums?

Ne­mai­nī­gums nozīmē, ka, kad objekts ir izveidots, to vairs nevar mainīt. Python valodā virknes ir ne­mai­nī­gas. Kad iz­man­to­jat Python metodes, lai no virknes izdzēstu rakstzī­mes, būtībā iz­vei­do­jat jaunu virkni ar kon­krē­tiem sā­kot­nē­jās virknes ele­men­tiem. Sākotnējā virkne tomēr paliek nemainīga. Virkņu ne­mai­nī­gums palīdz efektīvi pārvaldīt atmiņu un novērš ne­gai­dī­tus re­zul­tā­tus, ap­strā­dā­jot virknes.

Kā izdzēst un aizstāt at­se­viš­ķ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 ap­akš­vir­kni.

original_string = "Hello, Python#"
 
modified_string = original_string.replace('#', '!')
print(original_string)  # Output: Hello, Python#
print(modified_string)  # Output: Hello, Python!
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 iz­teik­smes virknēs un aizstāt tos ar citiem simboliem.

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

Modelis [@#$%^&*] ir regulārs izteiksme, kas atbilst īpašajiem simboliem @, #, $, %, ^, &,*. Funkcija re.sub() meklē visus modeļa sa­ska­ņo­ju­mus sākotnējā virknē original_string un aizstāj tos ar tukšu virkni ''. Ie­priek­šē­jā piemērā mēs sa­gla­bā­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. Tur­pi­nā­ju­mā mēs ap­ska­tī­sim, kā to izdarīt, iz­man­to­jot šādas metodes: isalpha(), filter() un 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

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

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

Šajā piemērā mēs iz­man­to­jā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()

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() metode atgriež True, ja rakstzīme ir burts, citādi tā atgriež False. filter() funkcija izveido fil­trē­ša­nas objektu, kas satur tikai tās rakstzī­mes, kas atbilst str.isalpha() no­sa­cī­ju­mam. Tas ļauj mums noņemt visas rakstzī­mes original_string, kas nav burti.

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

Tāpat kā ie­priek­šē­jos piemēros, jūs varat atdalīt skaitļus, iz­man­to­jot re.sub(), filter() un skait­lis­ko ek­vi­va­len­tu 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

Ar 0-9 varam definēt diapazonu, kas ietver visus ciparus no 0 līdz 9. Sa­vie­no­jums - starp 0 un 9 darbojas kā diapazona operators. Priekšā esošais ^ nozīmē visus simbolus, kas nav no­rā­dī­ta­jā diapazonā no 0 līdz 9. Šie simboli tiek aizstāti ar tukšiem simboliem, iz­man­to­jot 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() 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()

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

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, iz­man­to­jot translate()

translate() metode ir Python iebūvēta funkcija, ko izmanto sa­rež­ģī­tai rakstzīm­ju aiz­stā­ša­nai un tul­ko­ša­nai virknēs. Tā nodrošina efektīvu veidu, kā aizstāt rakstzī­mes, iz­man­to­jot tulkojumu tabulu.

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

Iepriekš minētajā piemērā mēs iz­man­to­jām str.maketrans() kons­truk­to­ru un dict.fromkeys(), lai izveidotu tul­ko­ša­nas tabulu. Tas nosaka, ka visas patskanis ir jāaizstāj ar *. Tad tabula tiek piemērota sā­kot­nē­jai virknei, lai iegūtu modified_string.

Go to Main Menu