Quand j'ai une chaîne comme ceci:Comment supprimer tout le texte entre les parenthèses externes dans une chaîne?
s1 = 'stuff(remove_me)'
je peux facilement supprimer les parenthèses et le texte dans l'aide
# returns 'stuff'
res1 = re.sub(r'\([^)]*\)', '', s1)
comme expliqué here.
Mais je rencontre parfois des expressions imbriquées comme ceci:
s2 = 'stuff(remove(me))'
Quand je lance la commande d'en haut, je me retrouve avec
'stuff)'
J'ai aussi essayé:
re.sub('\(.*?\)', '', s2)
ce qui me donne le même résultat.
Comment puis-je supprimer tout ce qui se trouve dans les parenthèses externes - y compris les parenthèses elles-mêmes - pour que je finisse avec 'stuff'
(ce qui devrait fonctionner pour des expressions arbitrairement complexes)?
Check [* supprimer le texte entre() et \ [\] en python *] (http: //stackoverflow.com/a/14598135/3832970). –
@ WiktorStribiżew: Merci! Mais il s'agit d'expressions qui ne sont pas imbriquées. Et je suis à peu près certain qu'il existe quelque chose qui n'exige pas beaucoup de clauses if-else et une boucle for-loop. – Cleb
Cette [réponse] (http://stackoverflow.com/a/12280660/3832970) contient la regex dont vous avez besoin mais vous avez besoin d'un module PyPi regex. –