Simulating call-by-reference

Rikard Bosnjakovic bos at REMOVETHIShack.org
Thu Nov 17 05:03:50 EST 2005


I'm tidying up some code. Basically, the code runs a bunch of 
regexp-searches (> 10) on a text and stores the match in a different variable.

Like this:

     re1 = r' ..(.*).. '
     re2 = r' .... '
     re3 = r' .(.*).. '
     ...
     m = re.search(re1, data)
     if m:
       myclass.bar = m.group(1)

     m = re.search(re2, data)
     if m:
       myclass.foo = m.group(1)

     m = re.search(re3, data)
     if m:
       myclass.baz = m.group(1)


While this code works, it's not very good looking.

What I want is to rewrite it to something like this:

    l = [ (re1, myclass.bar),
          (re2, myclass.foo),
          (re3, myclass.baz),
        ]

    for (x,y) in l:
      m = re.search(x, y)
      if m:
           y = m.group(1)

But since Python doesn't work that way, that idea is doomed. What I'm 
looking for are other (better) ways or pointers to accomplish this task of 
cleanup.


-- 
Sincerely,                      |                http://bos.hack.org/cv/
Rikard Bosnjakovic              |         Code chef - will cook for food
------------------------------------------------------------------------



More information about the Python-list mailing list