Kuigi stringid on Pythonis muu­tu­ma­tud, saate ole­mas­ole­vate stringide põhjal luua uusi stringe. Erinevaid meetodeid kasutades saate tähemärke eemaldada või asendada, et luua soovitud string.

Mida tähendab muu­tu­ma­tus?

Muu­tu­ma­tus tähendab, et kui objekt on loodud, ei saa seda enam muuta. Pythonis on stringid muu­tu­ma­tud. Kui eemaldate stringist tähemärke Pythoni meetodite abil, loote si­su­li­selt uue stringi, mis sisaldab ori­gi­naali teatud elemente. Ori­gi­naalst­ring jääb siiski muu­tu­ma­tuks. Stringide muu­tu­ma­tus aitab kaasa tõhusale mä­lu­hal­dusele ja hoiab ära ootamatud tulemused stringide tööt­le­misel.

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

Teatud tä­he­mär­kide eemal­da­miseks stringist võite kasutada str.replace() või re.sub() koos re­gu­laarse väl­jen­diga, mis esindab eemal­da­ta­vaid tähemärke või mustreid.

str.replace()

Funkt­siooni str.replace() ka­su­ta­takse teksti osade eemal­da­miseks ja asen­da­miseks alamst­rin­giga.

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

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

re.sub()

Funkt­sioon re.sub() kuulub Pythonis re moo­du­lisse. Selle funkt­siooni abil saate otsida strin­gi­dest re­gu­laar­seid väl­jen­deid ja asendada need teiste märkidega.

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

Muster [@#$%^&*] on re­gu­laarne väljend, mis vastab eri­mär­ki­dele @, #, $, %, ^, &,*. Funkt­sioon re.sub() otsib algse stringi original_string kõik vasted mustrile ja asendab need tühja stringiga ''. Eespool toodud näites sal­ves­ta­sime tulemuse muu­tu­jasse modified_string ja väl­jas­ta­sime selle.

Kuidas eemaldada kõik tä­he­mär­gid peale tähtede

Saate kasutada erinevaid meetodeid, et eemaldada kõik tähed stringist. Allpool vaatame, kuidas seda teha järgmiste mee­to­di­tega: isalpha(), filter() ja 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­laar­aval­dis [^a-zA-Z] sobib kokku mis tahes märgiga, mis ei ole väike- ega suurtäht. Selle tu­le­mu­sena koosneb modified_string ainult algse stringi tähtedest. Pange tähele, et see eemaldab ka tähtede vahelised tühikud.

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

Selles näites ka­su­ta­sime loendi mõistmist, et läbida iga täht original_string. Meetod isalpha() kont­rol­lib, kas märk on täht. Seejärel lisatakse tähed uude modified_string, samas kui kõik muud märgid jäetakse tä­he­le­pa­nuta.

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

Meetod str.isalpha() tagastab True, kui märk on täht, muidu tagastab False. Funkt­sioon filter() loob filt­ri­ob­jekti, mis sisaldab ainult märki, mis vastavad tin­gi­mu­sele str.isalpha(). See võimaldab meil eemaldada kõik märgid original_string, mis ei ole tähed.

Kuidas eemaldada kõik tä­he­mär­gid peale numbrite

Nagu eelmistes näidetes, võite numbreid eraldada numb­ri­tega re.sub(), filter() ja numbrite isalpha(), isdigit() numb­ri­lise ek­vi­va­len­diga.

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

0-9 abil saame mää­rat­leda vahemiku, mis hõlmab kõiki numbreid 0 kuni 9. Si­de­kriips - numbrite 0 ja 9 vahel toimib vahemiku ope­raa­to­rina. Eelnev ^ tähendab kõiki märke, mis ei kuulu määratud vahemikku 0 kuni 9. Need märgid asen­da­takse tühjade märkidega, kasutades 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

Funkt­sioon filter() koos funkt­sioo­niga isdigit() suudab stringist numbrid välja filt­ree­rida ja ülejäänud tä­he­mär­gid eemaldada. Neid koos kasutades näitab uus string meile numbreid 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

Me võime kasutada isdigit() meetodit ka loendi mõist­misel, et iterida läbi iga char original_string. Tä­hes­ti­kud, mis ei ole küm­nend­ko­had (not char.isdigit() on tõene), asen­da­takse tärniga *, muidu jäävad need samaks.

Kuidas eemaldada märke, kasutades translate()

translate() on Pythoni sis­se­ehi­ta­tud funkt­sioon, mida ka­su­ta­takse tä­he­mär­kide asen­da­miseks ja tõl­ki­miseks strin­gi­des. See pakub tõhusat viisi tä­he­mär­kide asen­da­miseks tõl­ke­ta­beli abil.

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

Eespool toodud näites ka­su­ta­sime tõl­ke­ta­beli loomiseks konst­ruk­to­rit str.maketrans() ja dict.fromkeys(). See määrab, et kõik täis­hää­li­kud asen­da­takse *. Seejärel ra­ken­da­takse tabelit algse stringi suhtes, et saada modified_string.

Go to Main Menu