Supprimer les éléments entre crochets d'une chaîne de Python
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
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 +.