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