Thank you. The data is pretty much random throughout the csv's so I think I it would have to iterate over the entire rows . I need to search all .csv files in the current directory. I can get glob to return a list of files. How could I get csv.reader to open all the files in the list? My loop logic must be bad.. I am using ActivePython 2.6.1.1. Any clues would be appreciated.
pattern = re.compile(r'10\.191\.239\.0') files = glob.glob("*.csv") csv.reader(open (files), delimiter=' ', quotechar='|') for f in files: for row in f: for cell in row: if pattern.search(cell): print ', '.join(row) Traceback (most recent call last): File "Q:\FILES\COMPUTER_NETWORKING\Python\CVSs\ipSrch-v1.0.py", l csv.reader(open (files), delimiter=' ', quotechar='|') TypeError: coercing to Unicode: need string or buffer, list found On Sun, May 31, 2009 at 12:45 PM, Richard Lovely<roadier...@googlemail.com> wrote: > 2009/5/31 Nick Burgess <burgess.n...@gmail.com>: >> Got it. >> >> the row is not a string or buffer but the cell is.. >> >> for row in spamReader: >> for cell in row: >> if pattern.search(cell): >> print ', '.join(row) >> >> > Alternatively, if you know that the string you want to search for only > appears in a single cell from the row, you could use > > for row in spamReader: > if pattern.search(cell[coll_number_here]): > print ', '.join(row) > > If there is a range of adjacent cells that could contain the text, you > could try something like > if pattern.search('|'.join(row[3:5]) > > For non-adjacent cells, try something like > > targetCells = [1,3,5] > for row in spamReader: > if pattern.search('|'.join(row[i] for i in targetCells)) > > Both of these solutions will be faster than iterating over th entire > row, unless tht is specifically what you want. > -- > Richard "Roadie Rich" Lovely, part of the JNP|UK Famile > www.theJNP.com > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor