On Feb 16, 12:10 pm, OdarR <olivier.da...@gmail.com> wrote: > Hi guys, > > how would you do a clever find and replace, where the value replacing > the tag > is changing on each occurence ? > > ".......TAG............TAG................TAG..........TAG....." > > is replaced by this : > > ".......REPL01............REPL02................REPL03..........REPL04..." > > A better and clever method than this snippet should exist I hope : > > counter = 1 > while 'TAG' in mystring: > mystring=mystring.replace('TAG', 'REPL'+str(counter), 1) > counter+=1 > ... > > (the find is always re-starting at the string beginning, this is not > efficient. > > any ideas ? thanks, > > Olivier
You could split on the string and interleave your new string in between: In [1]: def replmaker(): ...: index = 0 ...: while True: ...: index += 1 ...: yield "REPL%02i"%index ...: In [2]: def spliton(string, tag="TAG", sepgen=replmaker): ...: repl_iter = sepgen() ...: strlist = string.split(tag) ...: length = len(strlist) ...: for index, item in enumerate(strlist): ...: yield item ...: if index < length - 1: ...: yield repl_iter.next() ...: In [3]: ''.join(spliton (".......TAG............TAG................TAG..........TAG....." )) Out[3]: '.......REPL01............REPL02................REPL03..........REPL04.....' -- http://mail.python.org/mailman/listinfo/python-list