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