In perl, I might do (made up example just to illustrate the point): if(/add (\d+) (\d+)/) { do_add($1, $2); } elsif (/mult (\d+) (\d+)/) { do_mult($1,$2); } elsif(/help (\w+)/) { show_help($1); }
or even do_add($1,$2) if /add (\d+) (\d+)/; do_mult($1,$2) if /mult (\d+) (\d+)/; show_help($1) if /help (\w+)/; How can I best do this in pyhon? Attempt 1: m = re.search(r'add (\d+) (\d+)', $line) if m: do_add(m.group(1), m.group(2)) else: m = re.search(r'mult (\d+) (\d+)', $line) if m: do_mult(m.group(1), m.group(2)) else: m = re.search(r'help (\w+)', $line) show_help(m.group(1)) The increasing nesting is a problem. I could put them in a while loop just so I can use break while 1: m = re.search(r'add (\d+) (\d+)', $line) if m: do_add(m.group(1), m.group(2)) break m = re.search(r'mult (\d+) (\d+)', $line) if m: do_mult(m.group(1), m.group(2)) break m = re.search(r'help (\w+)', $line) if m: show_help(m.group(1)) break No nesting, but the while is misleading since I'm not looping and this is a bit awkward. I don't mind a few more key strokes, but I'd like clarity. I wish I could do if m = re.search(r'add (\d+) (\d+)', $line): do_add(m.group(1), m.group(2)) elif m = re.search(r'mult (\d+) (\d+)', $line): do_mult(m.group(1), m.group(2)) else m = re.search(r'help (\w+)', $line): show_help(m.group(1)) Now that's what I'm looking for, but I can't put the assignment in an expression. Any recommendations? Less "tricky" is better. Not having to import some personal module with a def to help would be better (e.g. for sharing).. Thanks -- http://mail.python.org/mailman/listinfo/python-list