Hoe een teken uit een tekenreeks verwijderen in Python
Hoewel strings in Python onveranderlijk zijn, kun je nieuwe strings maken op basis van bestaande strings. Met behulp van verschillende methoden kun je tekens verwijderen of vervangen om de gewenste string te maken.
Wat betekent onveranderlijkheid?
Onveranderlijkheid betekent dat een object, zodra het is aangemaakt, niet meer kan worden gewijzigd. In Python zijn strings onveranderlijk. Wanneer u met behulp van methoden in Python tekens uit een string verwijdert, maakt u in feite een nieuwe string aan met specifieke elementen van de oorspronkelijke string. De oorspronkelijke string blijft echter ongewijzigd. De onveranderlijkheid van strings draagt bij aan een efficiënt geheugenbeheer en voorkomt onverwachte resultaten bij het verwerken van strings.
Hoe individuele tekens of een reeks tekens verwijderen en vervangen
Om bepaalde tekens uit een tekenreeks te verwijderen, kunt u str.replace() of re.sub() gebruiken met een reguliere expressie die de tekens of patronen vertegenwoordigt die u wilt verwijderen.
str.replace()
De functie str.replace() wordt gebruikt om delen van een tekst te verwijderen en te vervangen door een substring.
original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Hello, Python#
print(modified_string) # Output: Hello, Python!PythonIn het bovenstaande voorbeeld vervangt de methode replace() het teken ‘#’ in original_string door een uitroepteken ‘!’.
re.sub()
De functie re.sub() behoort tot de re-module in Python. Met deze functie kun je zoeken naar reguliere expressies in strings en deze vervangen door andere tekens.
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!PythonHet patroon [@#$%^&*] is een reguliere expressie die overeenkomt met de speciale tekens @, #, $, %, ^, &,*. De functie re.sub() zoekt alle overeenkomsten van het patroon in de oorspronkelijke tekenreeks original_string en vervangt deze door een lege tekenreeks ''. In het bovenstaande voorbeeld hebben we het resultaat opgeslagen in de variabele modified_string en weergegeven.
Hoe alle tekens behalve letters verwijderen
Je kunt verschillende methoden gebruiken om alle letters uit een tekenreeks te verwijderen. Hieronder bekijken we hoe je dit kunt doen met de volgende methoden: isalpha(), filter() en 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: HelloWorldPythonDe reguliere expressie [^a-zA-Z] komt overeen met elk teken dat geen kleine letter of hoofdletter is. Als gevolg hiervan bestaat modified_string alleen uit de letters uit de oorspronkelijke tekenreeks. Houd er rekening mee dat hierdoor ook de spaties tussen de letters worden verwijderd.
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: HelloWorldPythonIn dit voorbeeld hebben we een lijstcomprehension gebruikt om elke letter in original_string te doorlopen. De methode isalpha() controleert of een teken een letter is. De letters worden vervolgens in een nieuwe modified_string ingevoegd, terwijl alle andere tekens worden genegeerd.
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: HelloWorldPythonDe methode str.isalpha() retourneert True als het teken een letter is, anders retourneert het False. De functie filter() maakt een filterobject aan dat alleen de tekens bevat die aan de voorwaarde str.isalpha() voldoen. Hierdoor kunnen we alle tekens in original_string verwijderen die geen letters zijn.
Hoe alle tekens behalve cijfers verwijderen
Net als in de vorige voorbeelden kunt u getallen scheiden met re.sub(), filter() en het numerieke equivalent van 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: 123PythonMet 0-9 kunnen we een bereik definiëren dat alle cijfers van 0 tot 9 omvat. Het koppelteken - tussen 0 en 9 fungeert als een bereikoperator. Het voorafgaande ^ betekent alle tekens die niet binnen het opgegeven bereik van 0 tot 9 vallen. Deze tekens worden vervangen door lege tekens met behulp van 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: 123PythonDe functie filter() in combinatie met isdigit() kan getallen uit een tekenreeks filteren en de resterende tekens verwijderen. Als we deze samen gebruiken, toont de nieuwe tekenreeks ons de cijfers 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******PythonWe kunnen de isdigit() ook gebruiken in een lijstcomprehension om elke char in original_string te doorlopen. Tekens die geen decimale cijfers zijn (not char.isdigit() is waar) worden vervangen door een asterisk *, anders blijven ze hetzelfde.
Hoe tekens verwijderen met translate()
De translate() is een ingebouwde functie in Python die wordt gebruikt voor geavanceerde tekenvervanging en vertaling in strings. Het biedt een efficiënte manier om tekens te vervangen met behulp van een vertaaltabel.
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.PythonIn het bovenstaande voorbeeld hebben we de constructor str.maketrans() en dict.fromkeys() gebruikt om de vertaaltabel te maken. Hiermee wordt gespecificeerd dat alle klinkers moeten worden vervangen door *. De tabel wordt vervolgens toegepast op de oorspronkelijke tekenreeks om modified_string te krijgen.