Les chaînes de ca­rac­tères sont in­va­riables en Python. Néanmoins, il est possible de supprimer des ca­rac­tères en créant, à l’aide de méthodes ap­pro­priées, une nouvelle chaîne de ca­rac­tères qui ne contient que les parties sou­hai­tées de l’original.

L’im­mu­ta­bi­lité des chaînes : dé­fi­ni­tion

L’im­mu­ta­bi­lité signifie qu’une fois qu’un objet a été créé, il ne peut plus être modifié. Dans le cas des chaînes de ca­rac­tères (strings) en Python, chaque chaîne de ca­rac­tères est immuable (ou immutable). Si vous supprimez des ca­rac­tères d’une chaîne avec des méthodes Python, vous créez en réalité une nouvelle chaîne de ca­rac­tères qui ne possède que certains éléments de l’originale. La chaîne d’origine n’est pas affectée. L’im­mu­ta­bi­lité des chaînes contribue à une gestion efficace de la mémoire dans Python et permet d’éviter des effets inat­ten­dus lors du travail avec des chaînes de ca­rac­tères.

Supprimer des ca­rac­tères spé­ci­fiques d’une chaîne de ca­rac­tères

Pour supprimer certains ca­rac­tères d’une chaîne, on peut par exemple utiliser str.replace() ou re.sub() avec une ex­pres­sion régulière qui re­pré­sente les ca­rac­tè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!
Python

Dans l’exemple ci-dessus, la méthode replace() remplace tous les ca­rac­tères de la forme « # » dans original_string par un point d’ex­cla­ma­tion « ! ».

re.sub()

La fonction re.sub() fait partie du module re de Python. Elle permet de re­cher­cher et de remplacer des ex­pres­sions ré­gu­lières dans des chaînes de ca­rac­tè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 !
Python

Le motif [@#$%^&*] est une ex­pres­sion régulière qui cor­res­pond aux ca­rac­tères spéciaux @, #, $, %, ^, &,*. La fonction re.sub() recherche toutes les cor­res­pon­dances du motif dans la chaîne de ca­rac­tères originale original_string et les remplace par une chaîne de ca­rac­tères vide ''. Nous en­re­gis­trons le résultat dans la variable modified_string et l’affichons.

Supprimer tous les ca­rac­tères sauf les lettres

Pour supprimer tous les ca­rac­tè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
Python

L’ex­pres­sion régulière [^a-zA-Z] cor­res­pond à tout caractère qui n’est ni une minuscule ni une majuscule. En con­sé­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
Python

Dans cet exemple, nous utilisons List Com­pre­hen­sion 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 ca­rac­tères modified_string, et tous les autres ca­rac­tè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
Python

str.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 ca­rac­tères pour lesquels la condition str.isalpha() est vraie. Ainsi, nous pouvons retirer tous les ca­rac­tères qui ne sont pas des lettres dans original_string.

Supprimer tous les ca­rac­tè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
Python

Avec 0-9, nous dé­fi­nis­sons 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 ca­rac­tères qui ne se trouvent pas dans la plage indiquée de 0 à 9. Ils sont remplacés par des ca­rac­tè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
Python

La fonction filter() combinée à isdecimal() peut filtrer les chiffres d’une chaîne et supprimer les ca­rac­tè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******
Python

Nous pouvons aussi utiliser la méthode isdecimal() dans une List Com­pre­hen­sion 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 as­té­risque *, sinon il reste inchangé.

Supprimer des ca­rac­tères avec translate()

La méthode translate() est une fonction intégrée dans Python qui est utilisée pour la subs­ti­tu­tion et la tra­duc­tion avancée de ca­rac­tères dans les chaînes de ca­rac­tères. Elle offre un moyen efficace de remplacer des ca­rac­tères en se basant sur un tableau de tra­duc­tions.

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.
Python

Nous utilisons le cons­truc­teur str.maketrans() et dict.fromkeys() pour créer la table de tra­duc­tion. Celle-ci indique que toutes les voyelles doivent être rem­pla­cées par *. La table est ensuite appliquée à la chaîne initiale pour obtenir modified_string.

Conseil

Lors du filtrage de chaînes de ca­rac­tères, il est également possible de prendre en compte le Python String Index pour filtrer les ca­rac­tères à des endroits précis. Si vous souhaitez éditer les chaînes de ca­rac­tères dans un format par­ti­cu­lier, vous devriez jeter un coup d’œil à notre guide sur le thème Python String Format.

Hé­ber­ge­ment Web
Hé­ber­ge­ment Web de pointe au meilleur prix
  • 3x plus rapide, 60 % d'éco­no­mie
  • Haute dis­po­ni­bi­lité >99,99 %
  • Seulement chez IONOS : jusqu'à 500 Go inclus
Aller au menu principal