Kuinka poistaa merkki merkkijonosta Pythonissa
Vaikka merkkijonot ovat muuttumattomia Pythonissa, voit luoda uusia merkkijonoja olemassa olevien pohjalta. Erilaisilla menetelmillä voit poistaa tai korvata merkkejä luodaksesi haluamasi merkkijonon.
Mitä muuttumattomuus tarkoittaa?
Muuttumattomuus tarkoittaa, että kun objekti on luotu, sitä ei voi enää muuttaa. Pythonissa merkkijonot ovat muuttumattomia. Kun poistat merkkejä merkkijonosta Pythonin menetelmillä, luot käytännössä uuden merkkijonon, joka sisältää alkuperäisen merkkijonon tiettyjä elementtejä. Alkuperäinen merkkijono pysyy kuitenkin muuttumattomana. Merkkijonojen muuttumattomuus auttaa tehokkaassa muistin hallinnassa ja estää odottamattomia tuloksia merkkijonoja käsiteltäessä.
Yksittäisten merkkien tai merkkijonojen poistaminen ja korvaaminen
Voit poistaa tiettyjä merkkejä merkkijonosta käyttämällä str.replace() tai re.sub() yhdessä säännöllisen lausekkeen kanssa, joka edustaa poistettavia merkkejä tai kuvioita.
str.replace()
str.replace() käytetään tekstin osien poistamiseen ja korvaamiseen osamerkkijonolla.
original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Hello, Python#
print(modified_string) # Output: Hello, Python!PythonYllä olevassa esimerkissä replace() korvaa merkin “#” kohdassa original_string huutomerkillä “!”.
re.sub()
Funktio re.sub() kuuluu Pythonin re-moduuliin. Tämän funktion avulla voit etsiä merkkijonoista säännöllisiä lausekkeita ja korvata ne muilla merkeillä.
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!PythonKuvio [@#$%^&*] on säännöllinen lauseke, joka vastaa erikoismerkkejä @, #, $, %, ^, &,*. Toiminto re.sub() etsii kaikki kuvion vastaavuudet alkuperäisestä merkkijonosta original_string ja korvaa ne tyhjällä merkkijonolla ''. Yllä olevassa esimerkissä tallensimme tuloksen muuttujaan modified_string ja tulostimme sen.
Kuinka poistaa kaikki merkit paitsi kirjaimet
Voit käyttää erilaisia menetelmiä poistaaksesi kaikki kirjaimet merkkijonosta. Seuraavassa tarkastelemme, miten tämä voidaan tehdä seuraavilla menetelmillä: 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: HelloWorldPythonSäännöllinen lauseke [^a-zA-Z] vastaa mitä tahansa merkkiä, joka ei ole pieni tai iso kirjain. Tämän seurauksena modified_string koostuu vain alkuperäisen merkkijonon kirjaimista. Huomaa, että tämä poistaa myös kirjainten väliset välilyönnit.
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: HelloWorldPythonTässä esimerkissä käytimme listakäsitystä toistamaan jokaisen kirjaimen original_string:ssä. isalpha() tarkistaa, onko merkki kirjain. Kirjaimet lisätään sitten uuteen modified_stringeen, kun taas kaikki muut merkit ohitetaan.
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() menetelmä palauttaa True, jos merkki on kirjain, muuten se palauttaa False. filter() funktio luo suodatinobjektin, joka sisältää vain merkit, jotka täyttävät str.isalpha() ehdon. Näin voimme poistaa kaikki merkit original_string, jotka eivät ole kirjaimia.
Kuinka poistaa kaikki merkit paitsi numerot
Kuten edellisissä esimerkeissä, voit erottaa numerot käyttämällä re.sub(), filter() ja numeerista vastinetta 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: 123PythonLuvulla 0-9 voimme määritellä alueen, joka kattaa kaikki numerot 0:sta 9:ään. Yhdysmerkki - numeron 0 ja 9 välissä toimii alueoperaattorina. Edeltävä ^ tarkoittaa kaikkia merkkejä, jotka eivät kuulu määriteltyyn alueeseen 0:sta 9:ään. Nämä merkit korvataan tyhjillä merkeillä käyttämällä 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: 123PythonToiminto filter() yhdessä toiminnon isdigit() kanssa voi suodattaa numerot merkkijonosta ja poistaa loput merkit. Kun näitä käytetään yhdessä, uusi merkkijono näyttää numerot 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******PythonVoimme myös käyttää isdigit() luettelon ymmärtämisessä, jotta voimme käydä läpi jokaisen char original_stringssa. Merkit, jotka eivät ole desimaalilukuja (not char.isdigit() on totta), korvataan tähdellä *, muuten ne pysyvät ennallaan.
Kuinka poistaa merkkejä käyttämällä translate()
translate() on Pythonin sisäänrakennettu toiminto, jota käytetään merkkien edistyneeseen korvaamiseen ja kääntämiseen merkkijonoissa. Se tarjoaa tehokkaan tavan korvata merkkejä käännöstabellin avulla.
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.PythonYllä olevassa esimerkissä käytimme str.maketrans() ja dict.fromkeys() käännöstabellin luomiseen. Tämä määrittää, että kaikki vokaalit korvataan *lla. Tabellia sovelletaan sitten alkuperäiseen merkkijonoon, jolloin saadaan modified_string.