Remove character from string in Python : voilà comment faire
Les chaînes de caractères sont invariables en Python. Néanmoins, il est possible de supprimer des caractères en créant, à l’aide de méthodes appropriées, une nouvelle chaîne de caractères qui ne contient que les parties souhaitées de l’original.
L’immutabilité des chaînes : définition
L’immutabilité signifie qu’une fois qu’un objet a été créé, il ne peut plus être modifié. Dans le cas des chaînes de caractères (strings) en Python, chaque chaîne de caractères est immuable (ou immutable). Si vous supprimez des caractères d’une chaîne avec des méthodes Python, vous créez en réalité une nouvelle chaîne de caractères qui ne possède que certains éléments de l’originale. La chaîne d’origine n’est pas affectée. L’immutabilité des chaînes contribue à une gestion efficace de la mémoire dans Python et permet d’éviter des effets inattendus lors du travail avec des chaînes de caractères.
Supprimer des caractères spécifiques d’une chaîne de caractères
Pour supprimer certains caractères d’une chaîne, on peut par exemple utiliser str.replace()
ou re.sub()
avec une expression régulière qui représente les caractères ou motifs à supprimer.
str.replace()
La fonction str.replace()
a pour but de supprimer des parties d’un texte ou de les remplacer par une sous-chaîne.
original_string = "Bonjour, Python#"
modified_string = original_string.replace('#', '!')
print(original_string) # Output: Bonjour, Python#
print(modified_string) # Output: Bonjour, Python!
PythonDans l’exemple ci-dessus, la méthode replace()
remplace tous les caractères de la forme « # » dans original_string
par un point d’exclamation « ! ».
re.sub()
La fonction re.sub()
fait partie du module re de Python. Elle permet de rechercher et de remplacer des expressions régulières dans des chaînes de caractères.
import re
original_string = "Bonjour, tout le monde ! @#$%^&*"
modified_string = re.sub(r'[@#$%^&*]', '', original_string)
print(original_string) # Output: Bonjour, tout le monde ! @#$%^&*
print(modified_string) # Output: Bonjour, tout le monde !
PythonLe motif [@#$%^&*]
est une expression régulière qui correspond aux caractères spéciaux @, #, $, %, ^, &,*
. La fonction re.sub()
recherche toutes les correspondances du motif dans la chaîne de caractères originale original_string
et les remplace par une chaîne de caractères vide ''
. Nous enregistrons le résultat dans la variable modified_string
et l’affichons.
Supprimer tous les caractères sauf les lettres
Pour supprimer tous les caractères d’une chaîne, on dispose entre autres des méthodes isalpha()
, filter()
et re.sub()
.
re.sub()
import re
original_string = "Bonjour, 123 tout le monde ! @#$%^&*"
modified_string = re.sub(r'[^a-zA-Z]', '', original_string)
print(original_string) # Output: Bonjour, 123 tout le monde ! @#$%^&*
print(modified_string) # Output: Bonjourtoutlemonde
PythonL’expression régulière [^a-zA-Z]
correspond à tout caractère qui n’est ni une minuscule ni une majuscule. En conséquence, modified_string
ne contient que les lettres de la chaîne initiale. Les espaces ont également été supprimés.
isalpha()
original_string = "Bonjour, 123 tout le monde ! @#$%^&*"
modified_string = ''.join(char for char in original_string if char.isalpha())
print(original_string) # Output: Bonjour, 123 tout le monde ! @#$%^&*
print(modified_string) # Output: Bonjourtoutlemonde
PythonDans cet exemple, nous utilisons List Comprehension pour itérer à travers chaque lettre de original_string
. La méthode isalpha()
vérifie si un caractère est une lettre. Seules les lettres sont insérées dans une nouvelle chaîne de caractères modified_string
, et tous les autres caractères sont ignorés.
filtre()
original_string = "Bonjour, 123 tout le monde ! @#$%^&*"
filtered_chars = filter(str.isalpha, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Bonjour, 123 tout le monde ! @#$%^&*
print(modified_string) # Output: Bonjourtoutlemonde
Pythonstr.isalpha()
est une méthode qui renvoie True
si le caractère est une lettre, sinon False
. La fonction filter()
crée un objet filtre qui ne contient que les caractères pour lesquels la condition str.isalpha()
est vraie. Ainsi, nous pouvons retirer tous les caractères qui ne sont pas des lettres dans original_string
.
Supprimer tous les caractères sauf les chiffres
Les nombres peuvent être séparés de la même manière que dans les exemples précédents avec re.sub()
, filter()
et la fonction isdecimal()
analogue à isalpha()
.
re.sub()
import re
original_string = "Bonjour, 123 tout le monde ! @#$%^&*"
modified_string = re.sub('[^0-9]', '', original_string)
print(original_string) # Output: Bonjour, 123 tout le monde ! @#$%^&*
print(modified_string) # Output: 123
PythonAvec 0-9
, nous définissons une plage qui inclut tous les chiffres de 0 à 9. Le trait d’union -
entre 0 et 9 sert d’opérateur de plage. Le préfixe ^
se réfère à tous les caractères qui ne se trouvent pas dans la plage indiquée de 0 à 9. Ils sont remplacés par des caractères vides par re.sub
.
filter()
original_string = "Bonjour, 123 tout le monde ! @#$%^&*"
filtered_chars = filter(str.isdecimal, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Bonjour, 123 tout le monde ! @#$%^&*
print(modified_string) # Output: 123
PythonLa fonction filter()
combinée à isdecimal()
peut filtrer les chiffres d’une chaîne et supprimer les caractères restants. La nouvelle chaîne ne nous affiche donc que les chiffres 123
.
isdecimal()
original_string = "Bonjour, 123 tout le monde"
modified_string = ''.join('*' if not char.isdecimal() else char for char in original_string)
print(original_string) # Output: Bonjour, 123 tout le monde
print(modified_string) # Output: *******123******
PythonNous pouvons aussi utiliser la méthode isdecimal()
dans une List Comprehension pour itérer à travers chaque char
dans original_string
. Si le caractère n’est pas un chiffre décimal (not char.isdecimal()
est vrai), il est remplacé par un astérisque *
, sinon il reste inchangé.
Supprimer des caractères avec translate()
La méthode translate()
est une fonction intégrée dans Python qui est utilisée pour la substitution et la traduction avancée de caractères dans les chaînes de caractères. Elle offre un moyen efficace de remplacer des caractères en se basant sur un tableau de traductions.
original_string = "Bonjour, tout le monde ! Enlève voyelles."
translation_table = str.maketrans(dict.fromkeys('aeiouAEIOU', '*'))
modified_string = original_string.translate(translation_table)
print(original_string) # Output: Bonjour, tout le monde ! Enlève voyelles.
print(modified_string) # Output: B*nj**r, t**t l* m*nd* ! *nl*v *v*y*ll*s.
PythonNous utilisons le constructeur str.maketrans()
et dict.fromkeys()
pour créer la table de traduction. Celle-ci indique que toutes les voyelles doivent être remplacées par *
. La table est ensuite appliquée à la chaîne initiale pour obtenir modified_string
.
Lors du filtrage de chaînes de caractères, il est également possible de prendre en compte le Python String Index pour filtrer les caractères à des endroits précis. Si vous souhaitez éditer les chaînes de caractères dans un format particulier, vous devriez jeter un coup d’œil à notre guide sur le thème Python String Format.
- Certificat SSL et protection DDoS
- Sauvegarde et restauration des données
- Assistance 24/7 et conseiller personnel