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