Need help in refactoring my python script

MRAB python at mrabarnett.plus.com
Sat Aug 8 13:09:47 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():

This will read all the lines and then iterate through them. You can 
iterate through the file line by line directly with:

     for line in fi:
         ...

> 	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)

Build a list of the regexes and their functions:

actions = []
actions.append((reg1, handleReg1))
actions.append((reg2, handleReg2))
actions.append((reg3, handleReg3))
actions.append((reg4, handleReg4))
actions.append((reg5, handleReg5))

for line in fi:
     for reg, func in actions:
         result = reg.match(line)
         if result:
             func(result)
             break



More information about the Python-list mailing list