On 2009-08-01 14:39, Michael Savarese wrote:
I'm a python newbie and I'm trying to test several regular expressions on the same line before moving on to next line. it seems to move on to next line before trying all regular expressions which is my goal. it only returns true for first regular expression does the curser have to be rest to beginning of line? If so, how would I do that. remember I'm new thanks in advance to any advice Mike S. the following is part of my code, readThis=open('c:/9320.txt','r') for line in readThis: try: thisKey = key.search(line).group(1) thisMap = map.search(line).group(1) thisParcel = parcel.search(line).group(1) except: continue
What is happening is that either key or map fails to match and trying to get a group raises an exception. This is caught, and the "continue" statement tells the for-loop to go to the next line in readThis. The "continue" statement does not mean "go back to where the error was raised and continue executing as if no error happened".
The key to using try: except: properly is to surround as little code as possible. Also, to explicitly state which exceptions you are going to catch.
In this case, though, you don't want to use exceptions. You should deal with the match objects that are the result of the .search() method.
for line in readThis: key_match = key.search(line) if key_match is not None: this_key = key_match.group(1) # ... do something with this_key map_match = map.search(line) if map_match is not None: this_map = map_match.group(1) # ... do something with this_map parcel_match = parcel.search(line) if parcel_match is not None: this_parcel = parcel_match.group(1) # ... do something with this_parcel -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list