Hvordan fjerne et tegn fra en streng i Python
Selv om strenger er uforanderlige i Python, kan du opprette nye strenger på grunnlag av eksisterende strenger. Ved hjelp av forskjellige metoder kan du fjerne eller erstatte tegn for å opprette den strengen du ønsker.
Hva betyr uforanderlighet?
Uforanderlighet betyr at når et objekt først er opprettet, kan det ikke lenger endres. I Python er strenger uforanderlige. Når du fjerner tegn fra en streng ved hjelp av metoder i Python, oppretter du i hovedsak en ny streng med bestemte elementer fra den opprinnelige. Den opprinnelige strengen forblir imidlertid uendret. Strengenes uforanderlighet bidrar til effektiv minnehåndtering og forhindrer uventede resultater ved håndtering av strenger.
Hvordan fjerne og erstatte enkelttegn eller en rekke tegn
For å fjerne bestemte tegn fra en streng, kan du bruke str.replace() eller re.sub() med et regulært uttrykk som representerer tegnene eller mønstrene du vil fjerne.
str.replace()
Funksjonen str.replace() brukes til å fjerne deler av en tekst og erstatte den med en delstreng.
original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Hello, Python#
print(modified_string) # Output: Hello, Python!PythonI eksemplet ovenfor bytter metoden replace() ut tegnet «#» i original_string med et utropstegn «!».
re.sub()
Funksjonen re.sub() tilhører re-modulen i Python. Med denne funksjonen kan du søke etter regulære uttrykk i strenger og erstatte dem med andre tegn.
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!PythonMønsteret [@#$%^&*] er et regulært uttrykk som samsvarer med spesialtegnene @, #, $, %, ^, &,*. Funksjonen re.sub() søker etter alle treff av mønsteret i den opprinnelige strengen original_string og erstatter dem med en tom streng ''. I eksemplet ovenfor lagret vi resultatet i variabelen modified_string og skrev det ut.
Hvordan fjerne alle tegn unntatt bokstaver
Du kan bruke forskjellige metoder for å fjerne alle bokstavene fra en streng. Nedenfor ser vi på hvordan du gjør dette med følgende metoder: isalpha(), filter() og 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: HelloWorldPythonDet regulære uttrykket [^a-zA-Z] samsvarer med alle tegn som ikke er små eller store bokstaver. Som et resultat består modified_string kun av bokstavene fra den opprinnelige strengen. Husk at dette også fjerner mellomrommene mellom bokstavene.
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: HelloWorldPythonI dette eksemplet brukte vi en listeforståelse for å iterere gjennom hver bokstav i original_string. Metoden isalpha() sjekker om et tegn er en bokstav. Bokstavene blir deretter satt inn i en ny modified_string, mens alle andre tegn ignoreres.
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: HelloWorldPythonMetoden str.isalpha() returnerer True hvis tegnet er en bokstav, ellers returnerer den False. Funksjonen filter() oppretter et filterobjekt som bare inneholder tegnene som oppfyller betingelsen str.isalpha(). Dette gjør at vi kan fjerne alle tegnene i original_string som ikke er bokstaver.
Hvordan fjerne alle tegn unntatt tall
Som i de tidligere eksemplene kan du skille tallene ved å bruke re.sub(), filter() og det numeriske ekvivalenten til 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: 123PythonMed 0-9 kan vi definere et område som omfatter alle sifrene fra 0 til 9. Bindestrek - mellom 0 og 9 fungerer som en områdeoperator. Det foranstående ^ betyr alle tegn som ikke ligger innenfor det angitte området fra 0 til 9. Disse tegnene erstattes av tomme tegn ved hjelp av 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: 123PythonFunksjonen filter() i kombinasjon med isdigit() kan filtrere tall fra en streng og fjerne de gjenværende tegnene. Ved å bruke disse sammen, viser den nye strengen oss tallene 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******PythonVi kan også bruke isdigit() i en listeforståelse for å iterere gjennom hver char i original_string. Tegn som ikke er desimaltall (not char.isdigit() er sant) vil bli erstattet med en stjerne *, ellers forblir de de samme.
Hvordan fjerne tegn ved hjelp av translate()
translate() er en innebygd funksjon i Python som brukes til avansert tegnbytting og oversettelse i strenger. Den gir en effektiv måte å erstatte tegn ved hjelp av en oversettelsestabell.
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.PythonI eksemplet ovenfor brukte vi konstruktøren str.maketrans() og dict.fromkeys() til å lage oversettelsestabellen. Dette spesifiserer at alle vokaler skal erstattes med *. Tabellen blir deretter brukt på den opprinnelige strengen for å få modified_string.