Ernesto García García <[EMAIL PROTECTED]> wrote:

> Hi experts,
> 
> How would you do this without the more and more indenting cascade of
> ifs?: 
> 
> match = my_regex.search(line)
> if match:
>    doSomething(line)
> else:
>    match = my_regex2.search(line)
>    if match:
>      doSomething2(line)
>    else:
>      match = my_regex3.search(line)
>      if match:
>        doSomething3(line)
> 
> etc.
> 
> Thanks in advance and regards,
> Ernesto
> 

PATTERNS = [
   (my_regex, doSomething),
   (my_regex2, doSomething2),
   (my_regex3, doSomething3),
]
...

for regex, action in PATTERNS:
    match = regex.search(line)
    if match:
        action(line)
        break


Also be aware that repeatedly calling the search method with different 
regular expressions is horribly inefficient. You would be much better to 
combine the regular expressions into one and check which groups match 
(although admittedly that behaves differently since it would find the 
regex which matches earliest in the string instead of finding the first 
regex which matches anywhere).
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to