Kā no Python valodas virknes izņemt rakstzīmi
Lai gan Python valodā virknes ir nemainīgas, jūs varat izveidot jaunas virknes, pamatojoties uz esošajām. Izmantojot dažādas metodes, jūs varat dzēst vai aizstāt rakstzīmes, lai izveidotu vēlamo virkni.
Ko nozīmē nemainīgums?
Nemainīgums nozīmē, ka, kad objekts ir izveidots, to vairs nevar mainīt. Python valodā virknes ir nemainīgas. Kad izmantojat Python metodes, lai no virknes izdzēstu rakstzīmes, būtībā izveidojat jaunu virkni ar konkrētiem sākotnējās virknes elementiem. Sākotnējā virkne tomēr paliek nemainīga. Virkņu nemainīgums palīdz efektīvi pārvaldīt atmiņu un novērš negaidītus rezultātus, apstrādājot virknes.
Kā izdzēst un aizstāt atsevišķ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 apakšvirkni.
original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Hello, Python#
print(modified_string) # Output: Hello, Python!PythonIepriekš 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 izteiksmes 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!PythonModelis [@#$%^&*] ir regulārs izteiksme, kas atbilst īpašajiem simboliem @, #, $, %, ^, &,*. Funkcija re.sub() meklē visus modeļa saskaņojumus sākotnējā virknē original_string un aizstāj tos ar tukšu virkni ''. Iepriekšējā piemērā mēs saglabā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. Turpinājumā mēs apskatīsim, kā to izdarīt, izmantojot šā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: HelloWorldPythonRegulārais izteiksme [^a-zA-Z] atbilst jebkuram simbolam, kas nav mazais vai lielais burts. Rezultātā modified_string sastāv tikai no sākotnē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: HelloWorldPythonŠajā piemērā mēs izmantojā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: HelloWorldPythonstr.isalpha() metode atgriež True, ja rakstzīme ir burts, citādi tā atgriež False. filter() funkcija izveido filtrēšanas objektu, kas satur tikai tās rakstzīmes, kas atbilst str.isalpha() nosacījumam. Tas ļauj mums noņemt visas rakstzīmes original_string, kas nav burti.
Kā izdzēst visus simbolus, izņemot ciparus
Tāpat kā iepriekšējos piemēros, jūs varat atdalīt skaitļus, izmantojot re.sub(), filter() un skaitlisko ekvivalentu 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: 123PythonAr 0-9 varam definēt diapazonu, kas ietver visus ciparus no 0 līdz 9. Savienojums - starp 0 un 9 darbojas kā diapazona operators. Priekšā esošais ^ nozīmē visus simbolus, kas nav norādītajā diapazonā no 0 līdz 9. Šie simboli tiek aizstāti ar tukšiem simboliem, izmantojot 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: 123PythonFunkcija 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******PythonMē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, izmantojot translate()
translate() metode ir Python iebūvēta funkcija, ko izmanto sarežģītai rakstzīmju aizstāšanai un tulkošanai virknēs. Tā nodrošina efektīvu veidu, kā aizstāt rakstzīmes, izmantojot 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.PythonIepriekš minētajā piemērā mēs izmantojām str.maketrans() konstruktoru un dict.fromkeys(), lai izveidotu tulkošanas tabulu. Tas nosaka, ka visas patskanis ir jāaizstāj ar *. Tad tabula tiek piemērota sākotnējai virknei, lai iegūtu modified_string.