Question about re.sub and callables

Guyon Morée guyon.moree at gmail.com
Fri Dec 30 00:07:14 EST 2005


I have a function with some params including some data to be used with
re.sub and some other data which i want to use in the replacement.

I can provide re.sub  with a callable, but this will only be called
with a match object, it's not possible to give it any of the other
params.

The solution I came up with to tackle this is with some funny globals,
which doesnt feel 'right':

--------------------------------------------------------------------------------------
import re

def test(data,pre,post):
    p = re.compile("([0-9])")
    global _pre, _post
    _pre = pre
    _post = post

    def repl(m):
        global _pre, _post
        return _pre + m.group(1) + _post

    print p.sub(repl, data)

>>> test("number 1 test", "->", "<-")
number ->1<- test
--------------------------------------------------------------------------------------

Is there any other way to do this?

cheers,

Guyon Morée
http://gumuz.looze.net/




More information about the Python-list mailing list