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
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to