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 :
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
Mais j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
s
7
$
---*---*---*---r&&u---
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 !

Comment dire à re.sub que je ne veux remplacer que match.groups()[0] ?

Merci d'avance !