Kaip pašalinti simbolį iš eilutės Python kalboje
Nors Python kalboje stygos yra nekintamos, galite kurti naujas stygas remiantis esamomis. Naudodami įvairius metodus, galite pašalinti arba pakeisti simbolius, kad sukurtumėte norimą stygą.
Ką reiškia nekintamumas?
Nekintamumas reiškia, kad kartą sukurtas objektas nebegali būti keičiamas. Python kalboje eilutės yra nekintamos. Kai Python kalboje naudojant metodus pašalinate simbolius iš eilutės, iš esmės sukuriate naują eilutę su tam tikrais originalo elementais. Tačiau originalo eilutė lieka nepakitusi. Eilutės nekintamumas padeda efektyviai 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 reguliarią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!PythonPateiktame 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 reguliariųjų išraiškų eilutėse ir pakeisti jas kitais simboliais.
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 reguliarusis išraiška, atitinkanti specialiuosius simbolius @, #, $, %, ^, &,*. Funkcija re.sub() ieško visų šablono atitikmenų pradiniame strype original_string ir pakeičia juos tuščiu strypu ''. Pateiktame pavyzdyje rezultatą išsaugojome kintamajame modified_string ir išvedėme jį.
Kaip pašalinti visus simbolius, išskyrus raides
Galite naudoti įvairius metodus, kad pašalintumėte visas raides iš eilutės. Toliau pažiūrėsime, 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: HelloWorldPythonReguliari 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šalinami 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: HelloWorldPythonŠiame pavyzdyje naudojome sąrašo supratimą, kad peržiūrėtume kiekvieną raidę original_string. isalpha() metodas patikrina, ar simbolis yra raidė. Raidės įterpiamos į naują modified_string, o visi kiti simboliai ignoruojami.
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() metodas grąžina True, jei simbolis yra raidė, kitais atvejais grąžina False. filter() funkcija sukuria filtro objektą, kuriame yra tik simboliai, atitinkantys 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 ankstesniuose pavyzdžiuose, skaičius galite atskirti naudodami re.sub(), filter() ir skaitmeninį ekvivalentą 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: 123PythonNaudodami 0-9, galime apibrėžti intervalą, apimantį visus skaitmenis nuo 0 iki 9. Brūkšnys - tarp 0 ir 9 veikia kaip intervalo operatorius. Prieš tai esantis ^ reiškia visus simbolius, kurie nėra nurodytame intervale nuo 0 iki 9. Šie simboliai pakeičiami tuščiais simboliais 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: 123PythonFunkcija filter() kartu su isdigit() gali filtruoti skaičius iš eilutės ir pašalinti likusius simbolius. Naudojant jas kartu, naujoji eilutė rodo mums skaitmenis 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******PythonMes taip pat galime naudoti isdigit() metodą sąrašo supratime, kad kartotume kiekvieną char iš original_string. Simboliai, kurie nėra dešimtainiai skaitmenys (not char.isdigit() yra tiesa), bus pakeisti žvaigždute *, 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 veiksmingą 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.PythonPateiktame pavyzdyje vertimo lentelę sukūrėme naudodami konstruktorių str.maketrans() ir dict.fromkeys(). Tai reiškia, kad visos balsės turi būti pakeistos į *. Tada lentelė pritaikoma pradiniam žodžių junginiui, kad gautume modified_string.