n179911 wrote: > I have a python script which process a file line by line, if the line > matches a regex, it calls a function to handle it. > > My question is is there a better write to refactor my script. The > script works, but as it is, i need to keep indent to the right of the > editor as I add more and more regex for my file. > > Thank you for any idea. > Now my code end up like this: > > for line in fi.readlines(): > > result= reg1.match(line) > > if result: > handleReg1(result) > > else: > result = reg2.match(line) > > if result: > handleReg2(result) > else: > result = reg3.match(line) > > if result: > handleReg3(result) > else: > result = reg4.match(line) > > if result: > handleReg4(result) > else: > result = reg5.match(line) > > if result: > handleReg5(result) >
If the handlers are indeed functions you can put them into a list: match_handler_pairs = [ (reg1.match, handleReg1), (reg2.match, handleReg2), ... ] for line in fi: # look Ma, no readlines() for match, handler in match_handler_pairs: result = match(line) if result: handler(result) break Peter -- http://mail.python.org/mailman/listinfo/python-list