Bonjour,
une petite question assez subtile sur l'utilisation de re.sub :
Je voudrais remplacer des morceaux de chaînes dépendant du contexte (caractères autour du motif à remplacer) sans altérer ce contexte.
Un exemple (complètement bidon, juste pour illustrer) :
Je veux remplacer les caractères uniques placés entre 2 lettres par '*'.
Ma chaîne : '---asd---j7k---t$u---r&&u---'
Ce que je veux obtenir : '---a*d---j*k---t*u---r&&u---'
J'essaye en utilisant re.sub :Mais j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import re ex = re.compile('[a-z](.)[a-z]') def repl ( match ): print match.groups()[0] return '*' s1 = '---asd---j7k---t$u---r&&u---' s2 = ex.sub( repl,s1 ) print s2
On voit que match.groups()[0] contient bien ce qu'il faut, mais les lettres qui entourent le caractère à remplacer sont remplacées avec !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4s 7 $ ---*---*---*---r&&u---
Comment dire à re.sub que je ne veux remplacer que match.groups()[0] ?
Merci d'avance !
Partager