Need help in refactoring my python script
Peter Otten
__peter__ at web.de
Sat Aug 8 13:02:09 EDT 2009
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
More information about the Python-list
mailing list