"Jeff Epler" wrote: > On Sun, Jun 12, 2005 at 04:55:38PM -0700, Xah Lee wrote: > > if i have > > mytext.replace(a,b) > > how to find out many many occurances has been replaced? > > The count isn't returned by the replace method. You'll have to count > and then replace. > > def count_replace(a, b, c): > count = a.count(b) > return count, s.replace(b, c) > > >>> count_replace("a car and a carriage", "car", "bat") > (2, 'a bat and a batriage')
I thought naively that scanning a long string twice would be almost twice as slow compared to when counting was done along with replacing. Although it can done with a single scan, it is almost 9-10 times slower, mainly because of the function call overhead; the code is also longer: import re def count_replace_slow(aString, old, new): count = [0] def counter(match): count[0] += 1 return new replaced = re.sub(old,counter,aString) return count[0], replaced A good example of trying to be smart and failing :) George -- http://mail.python.org/mailman/listinfo/python-list