In article <[EMAIL PROTECTED]>, Stephan <[EMAIL PROTECTED]> writes >I'm fairly new to python and am working on parsing some delimited text >files. I noticed that there's a nice CSV reading/writing module >included in the libraries. > >My data files however, are odd in that they are composed of lines with >alternating formats. (Essentially the rows are a header record and a >corresponding detail record on the next line. Each line type has a >different number of fields.) > >Can the CSV module be coerced to read two line formats at once or am I >better off using read and split? > >Thanks for your insight, >Stephan >
The csv module should be suitable. The reader just takes each line, parses it, then returns a list of strings. It doesn't matter if different lines have different numbers of fields. To get an idea of what I mean, try something like the following (untested): import csv reader = csv.reader(open(filename)) while True: # Read next "header" line, if there isn't one then exit the loop header = reader.next() if not header: break # Assume that there is a "detail" line if the preceding # "header" line exists detail = reader.next() # Print the parsed data print '-' * 40 print "Header (%d fields): %s" % (len(header), header) print "Detail (%d fields): %s" % (len(detail), detail) You could wrap this up into a class which returns (header, detail) pairs and does better error handling, but the above code should illustrate the basics. -- Andrew McLean -- http://mail.python.org/mailman/listinfo/python-list