Kuidas eemaldada Pythonis märk stringist
Kuigi stringid on Pythonis muutumatud, saate olemasolevate stringide põhjal luua uusi stringe. Erinevaid meetodeid kasutades saate tähemärke eemaldada või asendada, et luua soovitud string.
Mida tähendab muutumatus?
Muutumatus tähendab, et kui objekt on loodud, ei saa seda enam muuta. Pythonis on stringid muutumatud. Kui eemaldate stringist tähemärke Pythoni meetodite abil, loote sisuliselt uue stringi, mis sisaldab originaali teatud elemente. Originaalstring jääb siiski muutumatuks. Stringide muutumatus aitab kaasa tõhusale mäluhaldusele ja hoiab ära ootamatud tulemused stringide töötlemisel.
Kuidas eemaldada ja asendada üksikuid märke või märkide kogumit
Teatud tähemärkide eemaldamiseks stringist võite kasutada str.replace() või re.sub() koos regulaarse väljendiga, mis esindab eemaldatavaid tähemärke või mustreid.
str.replace()
Funktsiooni str.replace() kasutatakse teksti osade eemaldamiseks ja asendamiseks alamstringiga.
original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Hello, Python#
print(modified_string) # Output: Hello, Python!PythonEespool toodud näites asendab meetod replace() märgi „#” märgiga original_string märgi „!” asemel.
re.sub()
Funktsioon re.sub() kuulub Pythonis re moodulisse. Selle funktsiooni abil saate otsida stringidest regulaarseid väljendeid 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!PythonMuster [@#$%^&*] on regulaarne väljend, mis vastab erimärkidele @, #, $, %, ^, &,*. Funktsioon re.sub() otsib algse stringi original_string kõik vasted mustrile ja asendab need tühja stringiga ''. Eespool toodud näites salvestasime tulemuse muutujasse modified_string ja väljastasime selle.
Kuidas eemaldada kõik tähemärgid peale tähtede
Saate kasutada erinevaid meetodeid, et eemaldada kõik tähed stringist. Allpool vaatame, kuidas seda teha järgmiste meetoditega: 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: HelloWorldPythonRegulaaravaldis [^a-zA-Z] sobib kokku mis tahes märgiga, mis ei ole väike- ega suurtäht. Selle tulemusena 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: HelloWorldPythonSelles näites kasutasime loendi mõistmist, et läbida iga täht original_string. Meetod isalpha() kontrollib, kas märk on täht. Seejärel lisatakse tähed uude modified_string, samas kui kõik muud märgid jäetakse tähelepanuta.
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: HelloWorldPythonMeetod str.isalpha() tagastab True, kui märk on täht, muidu tagastab False. Funktsioon filter() loob filtriobjekti, mis sisaldab ainult märki, mis vastavad tingimusele str.isalpha(). See võimaldab meil eemaldada kõik märgid original_string, mis ei ole tähed.
Kuidas eemaldada kõik tähemärgid peale numbrite
Nagu eelmistes näidetes, võite numbreid eraldada numbritega re.sub(), filter() ja numbrite isalpha(), isdigit() numbrilise ekvivalendiga.
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: 123Python0-9 abil saame määratleda vahemiku, mis hõlmab kõiki numbreid 0 kuni 9. Sidekriips - numbrite 0 ja 9 vahel toimib vahemiku operaatorina. Eelnev ^ tähendab kõiki märke, mis ei kuulu määratud vahemikku 0 kuni 9. Need märgid asendatakse 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: 123PythonFunktsioon filter() koos funktsiooniga isdigit() suudab stringist numbrid välja filtreerida ja ülejäänud tähemärgid 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******PythonMe võime kasutada isdigit() meetodit ka loendi mõistmisel, et iterida läbi iga char original_string. Tähestikud, mis ei ole kümnendkohad (not char.isdigit() on tõene), asendatakse tärniga *, muidu jäävad need samaks.
Kuidas eemaldada märke, kasutades translate()
translate() on Pythoni sisseehitatud funktsioon, mida kasutatakse tähemärkide asendamiseks ja tõlkimiseks stringides. See pakub tõhusat viisi tähemärkide asendamiseks tõlketabeli 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.PythonEespool toodud näites kasutasime tõlketabeli loomiseks konstruktorit str.maketrans() ja dict.fromkeys(). See määrab, et kõik täishäälikud asendatakse *. Seejärel rakendatakse tabelit algse stringi suhtes, et saada modified_string.