On 2008-12-31, TP <tribulati...@paralleles.invalid> wrote: > Hi everybody, > > I would like to change only the nth occurence of a pattern in a string. The > problem with "replace" method of strings, and "re.sub" is that we can only > define the number of occurrences to change from the first one. > >>>> v="coucou" >>>> v.replace("o","i",2) > 'ciuciu' >>>> import re >>>> re.sub( "o", "i", v,2) > 'ciuciu' >>>> re.sub( "o", "i", v,1) > 'ciucou' > > What is the best way to change only the nth occurence (occurrence number n)? > > Why this default behavior? For the user, it would be easier to put re.sub or > replace in a loop to change the first n occurences.
I would do it as follows: 1) Change the pattern n times to somethings that doesn't occur in your string 2) Change it back n-1 times 3) Change the remaining one to what you want. >>> v="coucou" >>> v.replace('o', 'O', 2).replace('O', 'o', 1).replace('O', 'i') 'couciu' -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list