On Mon, 9 May 2005 15:48:14 +0200, "Fredrik Lundh" <[EMAIL PROTECTED]> wrote:
>Bill Mill wrote: > >>>>> for rep in L: >> ... source = source.replace(token, rep, 1) > >here's another way to do it: > >>>> L = ["11", "22", "33"] >>>> S = "xyzzy text we've got xyzzy text xyzzy yeah yeah yeah" >>>> L.reverse() >>>> re.sub("xyzzy", lambda x: L.pop(), S) >"11 text we've got 22 text 33 yeah yeah yeah" > >or, less destructive: > >>>> L = ["11", "22", "33"] >>>> S = "xyzzy text we've got xyzzy text xyzzy yeah yeah yeah" >>>> re.sub("xyzzy", lambda x, pop=iter(L).next: pop(), S) > >(a few more iterations of this idea and we're in python riddle country...) > Another: >>> L = ["11", "22", "33"] >>> S = "xyzzy text we've got xyzzy text xyzzy yeah yeah yeah" >>> ''.join([(i%2 and [n()] or [s()])[0] for s, n in ... [(iter(S.split('xyzzy')).next, iter(L).next)] for i in xrange(2*len(L)+1)]) "11 text we've got 22 text 33 yeah yeah yeah" Or maybe: >>> ''.join(map(lambda x,y:(x or '')+(y or ''), S.split('xyzzy'), L)) "11 text we've got 22 text 33 yeah yeah yeah" Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list