OdarR 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,


The first thing that comes to mind is re.sub:

import re

def replace(s, patt, repls):
    def onmatch(m):
        onmatch.idx += 1
        return repls[onmatch.idx]
    onmatch.idx = -1
    return patt.sub(onmatch, s)

test = """
abcTAG TAG asdTAGxyz
"""

REPLS = [
    'REPL1',
    'REPL2',
    'REPL3',
    ]

print replace(test, re.compile('TAG'), REPLS)

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to