HOWTO · Python

Supprimer les parenthèses de la chaîne en Python

Nous pouvons utiliser la manipulation de chaîne et les expressions régulières pour supprimer un ensemble de parenthèses d'une chaîne en Python.

Sur cette page

Pour supprimer d’une chaîne Python chaque parenthèse ouvrante et fermante littérale, remplacez chaque caractère par une chaîne vide ou ne conservez que les caractères qui ne sont pas des parenthèses. Ces méthodes suppriment les deux caractères eux-mêmes ; elles ne retirent pas une expression entre parenthèses avec son contenu. Par exemple, (a + b) devient a + b uniquement parce que les parenthèses disparaissent : le texte a + b reste présent.

Les exemples ci-dessous utilisent la même entrée pour comparer quatre méthodes : str.replace(), les expressions régulières avec re.sub(), une boucle et une compréhension de liste avec join().

Utiliser str.replace() pour supprimer les parenthèses d’une chaîne en Python

Pour cette tâche précise, str.replace() est une solution directe. Une chaîne étant immuable, la méthode renvoie une nouvelle chaîne et ne modifie pas la valeur d’origine. Chaque appel remplace les occurrences d’une sous-chaîne ; enchaînez un appel pour ( et un autre pour ). L’argument facultatif count limite le nombre d’occurrences remplacées par un appel. Sans cet argument, toutes les occurrences sont remplacées.

Exécutez cet exemple. Le code et le texte qu’il affiche restent en anglais :

text = "(This is (a) string)"
result = text.replace("(", "").replace(")", "")
print(result)

Le résultat contient le texte d’origine, privé des deux caractères de parenthèse. Les deux appels rendent les remplacements explicites et évitent d’utiliser un motif lorsque les caractères à supprimer sont connus à l’avance.

Utiliser les expressions régulières pour supprimer les parenthèses d’une chaîne en Python

Utilisez re.sub() lorsque les caractères à supprimer font partie d’un motif plus large ou que ce motif est susceptible d’évoluer. Importez le module re de Python, puis transmettez d’abord le motif, ensuite le remplacement et enfin la chaîne d’entrée. Dans la classe de caractères [()], les parenthèses sont des caractères littéraux : elle correspond donc à ( ou à ). Remplacer chaque correspondance par "" supprime ces caractères.

Exécutez cet exemple. Le code et le texte qu’il affiche restent en anglais :

import re

text = "(This is (a) string)"
result = re.sub(r"[()]", "", text)
print(result)

Pour seulement deux caractères littéraux connus, cette méthode demande davantage de code que deux appels enchaînés à str.replace(). Les expressions régulières sont utiles lorsqu’un motif clarifie la transformation ; elles ne sont pas automatiquement le meilleur choix pour un simple remplacement littéral.

Utiliser une boucle pour supprimer les parenthèses d’une chaîne en Python

Une boucle rend explicite la règle de filtrage. Commencez par une chaîne de résultat vide, examinez chaque caractère de l’entrée et ajoutez-le uniquement s’il ne s’agit pas de l’une des deux parenthèses. La valeur d’origine reste inchangée. Cette méthode s’adapte facilement lorsque la condition de conservation d’un caractère dépend d’une logique supplémentaire.

Exécutez cet exemple. Le code et le texte qu’il affiche restent en anglais :

text = "(This is (a) string)"
result = ""
for character in text:
    if character not in "()":
        result += character
print(result)

La condition vérifie l’appartenance à la chaîne de deux caractères "()" : elle exclut l’une ou l’autre parenthèse et conserve les espaces ainsi que tous les autres caractères. Pour une chaîne courte, cette méthode est facile à suivre. Pour construire un résultat à partir de nombreux caractères, une compréhension avec join() exprime le même filtrage de façon concise.

Utiliser une compréhension de liste et join() pour supprimer les parenthèses d’une chaîne en Python

Une compréhension de liste sélectionne les caractères à conserver et en crée une liste. join() assemble ensuite ces caractères sans insérer de séparateur. Ici, la chaîne vide placée avant .join() sert de séparateur ; les caractères conservés restent donc côte à côte. join() est une méthode de chaîne appelée sur cette chaîne séparatrice.

Exécutez cet exemple. Le code et le texte qu’il affiche restent en anglais :

text = "(This is (a) string)"
characters = [character for character in text if character not in "()"]
result = "".join(characters)
print(result)

Choisissez str.replace() pour un petit ensemble fixe de caractères littéraux. Choisissez re.sub() lorsque la règle se décrit naturellement par un motif. Utilisez une boucle si le filtrage nécessite un contrôle explicite, ou une compréhension de liste avec join() pour filtrer les caractères de façon concise. Les quatre méthodes suppriment les parenthèses littérales et en préservent le contenu ; analyser des parenthèses imbriquées ou supprimer des groupes équilibrés demande une autre approche.