Supprimer les éléments entre crochets d'une chaîne de Python

Oct 22 2020

Je suis obligé de supprimer les éléments dans le crochet carré d'une chaîne. Cependant, je ne parviens pas à obtenir les résultats souhaités.

Vous trouverez ci-dessous la sortie souhaitée que je dois obtenir:

Exemple de sortie

[[pomme] .png -> [.png

[pomme]]. png ->] .png

[[pomme]]. png -> [] .png

[une] pomme [adaykeeps]] le [[doctor] away.png -> apple] le [away.png

Vous trouverez ci-dessous les méthodes que j'ai utilisées mais je n'ai pas pu obtenir le résultat requis:

Méthode Regex

fichier = re.sub (r '(\ d * \ D + \ d *) \ s +', '', re.sub (r '{. +? # (\ d +). \ d +)}', r '( \ 1) ', fichier));

SubString, méthode

openbracket = fichier.find ('['); closebracket = fichier.find (']');

si len (fichier)> closebracket: fichier = fichier [0: openbracket:] + fichier [closebracket + 1 ::]

Réponses

2 Nick Oct 22 2020 at 11:23

Vous pouvez le faire avec regex; votre regex doit correspondre à un [suivi d'un certain nombre de caractères non [ou ]jusqu'à a ], et remplacer cette chaîne par rien:

import re

strings = ['[[apple].png', '[apple]].png', '[[apple]].png', '[an]apple[adaykeeps]]the[[doctor]away.png']

for s in strings:
    name = re.sub(r'\[[^][]*\]', '', s)
    print(name)

Production:

[.png
].png
[].png
apple]the[away.png

Ce code remplacera []par une chaîne vide ``; si ce n'est pas le comportement souhaité, changez le *dans l'expression rationnelle en a +.