On Jun 27, 8:31 am, [EMAIL PROTECTED] wrote: > Hi - > > I need help capturing the output of a RegEx search. > I dont understand why this conditional fails. > > Here is the code: > > #================================= start snip > ====================================== > #!/usr/local/bin/python > > import os > import re > > dirName = '/home/user/bin/logs' > os.chdir(dirName) > files = os.listdir(dirName) > for myFile in files: > # print 'checking ...', myFile > reCheck = '' > reCheck = re.search(r'\bCC_', myFile) > # print 'reCheck = ', '=', reCheck, '=' > > if reCheck == "None": > print myFile, ' ..... does not qualify' > else: > print ' ', myFile, 'qualifies...', reCheck > > #================================= end snip > ====================================== > > The problem is that reCheck never == None. > So all of the files "qualify". My understanding of the > re.search (re.search(r'\bCC_', myFile)) is ... > 1) give me only files that start with a word boundary (\b) > 2) followed by a (CC_) > 3) in myFile > > Why doesn't the output of the re.search load reCheck with valid data? > (like "None")
Because "None" is not "valid data" in this case. re.search returns None or a MatchObject instance. >>> type(None) <type 'NoneType'> >>> type("None") <type 'str'> >>> None == "None" False >>> You may like to read this: http://www.amk.ca/python/howto/regex/ If you want to check for strings that start with some condition, you need re.match, not re.search. You don't need the '\b'; re.match(r'CC_', filename) would do the job. But then so would filename.startswith('CC_') HTH, John -- http://mail.python.org/mailman/listinfo/python-list