Sådan fjerner du et tegn fra en streng i Python
Selvom strenge er uforanderlige i Python, kan du oprette nye strenge på basis af eksisterende strenge. Ved hjælp af forskellige metoder kan du fjerne eller erstatte tegn for at oprette den ønskede streng.
Hvad betyder uforanderlighed?
Uforanderlighed betyder, at når et objekt først er oprettet, kan det ikke længere ændres. I Python er strenge uforanderlige. Når du fjerner tegn fra en streng ved hjælp af metoder i Python, opretter du i virkeligheden en ny streng med bestemte elementer fra den oprindelige. Den oprindelige streng forbliver dog uændret. Strenge er uforanderlige, hvilket bidrager til en effektiv hukommelsesstyring og forhindrer uventede resultater, når man arbejder med strenge.
Sådan fjerner og erstatter du enkelte tegn eller en række tegn
For at fjerne bestemte tegn fra en streng kan du bruge str.replace() eller re.sub() med et regulært udtryk, der repræsenterer de tegn eller mønstre, du vil fjerne.
str.replace()
Funktionen str.replace() bruges til at fjerne dele af en tekst og erstatte dem 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 erstatter metoden replace() tegnet ‘#’ i original_string med et udråbstegn ‘!’.
re.sub()
Funktionen re.sub() tilhører re-modulet i Python. Med denne funktion kan du søge efter regulære udtryk i strenge 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 udtryk, der matcher specialtegnene @, #, $, %, ^, &,*. Funktionen re.sub() søger efter alle match af mønsteret i den oprindelige streng original_string og erstatter dem med en tom streng ''. I eksemplet ovenfor gemte vi resultatet i variablen modified_string og udskrev det.
Sådan fjerner du alle tegn undtagen bogstaver
Du kan bruge forskellige metoder til at fjerne alle bogstaverne fra en streng. Nedenfor ser vi på, hvordan du gø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 udtryk [^a-zA-Z] matcher ethvert tegn, der ikke er et lille eller stort bogstav. Som følge heraf består modified_string kun af bogstaverne fra den oprindelige streng. Husk, at dette også fjerner mellemrummene mellem bogstaverne.
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 eksempel har vi brugt en listeforståelse til at gentage hvert bogstav i original_string. Metoden isalpha() kontrollerer, om et tegn er et bogstav. Bogstaverne indsættes derefter 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 et bogstav, ellers returnerer den False. Funktionen filter() opretter et filterobjekt, der kun indeholder de tegn, der opfylder betingelsen str.isalpha(). Dette giver os mulighed for at fjerne alle tegn i original_string, der ikke er bogstaver.
Sådan fjerner du alle tegn undtagen tal
Som i de foregående eksempler kan du adskille tal ved hjælp af re.sub(), filter() og det numeriske ækvivalent 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 interval, der omfatter alle cifre fra 0 til 9. Bindestregen - mellem 0 og 9 fungerer som en intervaloperator. Det foranstillede ^ betyder alle tegn, der ikke ligger inden for det angivne interval fra 0 til 9. Disse tegn erstattes af tomme tegn ved hjælp af 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: 123PythonFunktionen filter() i kombination med isdigit() kan filtrere tal fra en streng og fjerne de resterende tegn. Ved at bruge disse sammen viser den nye streng os cifrene 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å bruge isdigit() i en listeforståelse til at gentage hver char i original_string. Tegn, der ikke er decimaltal (not char.isdigit() er sandt), erstattes med en stjerne *, ellers forbliver de de samme.
Sådan fjerner du tegn ved hjælp af translate()
translate() er en indbygget funktion i Python, der bruges til avanceret tegnudskiftning og oversættelse i strenge. Den giver en effektiv måde at udskifte tegn ved hjælp af en oversættelsestabel.
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 brugte vi konstruktøren str.maketrans() og dict.fromkeys() til at oprette oversættelsestabellen. Dette angiver, at alle vokaler skal erstattes af *. Tabellen anvendes derefter på den oprindelige streng for at få modified_string.