--On Thursday, May 13, 2004 9:16 AM -0400 Lloyd Kvam
<pythonTutor at venix.com> wrote:
> It's hard to keep up with all of the available modules. My experience
> is that the standard csv module is better than the third party
> alternatives.
Thanks for the confirmation, Lloyd.
I'm trying to use the equivalent of "hello, world" for csv (from the
example given in the documentation) to read and parse lines from a CSV file
produced by Excel. The code:
import csv
reader = csv.reader(file("true-csv.csv"), dialect='excel')
for row in reader:
print row
Some of the CSV:
PHRASE,ITEM,MONTH,YEAR,PAGE^M"Investments, 2001-2002",Alternative asset
commitment approved with Yorktown Energy Partners V
L.P.,April,2002,283^M"Investments, 2001-2002",Alternative asset
commitment approved with BPG Investment Partnership VI
L.P.,April,2002,283^M
That CSV came directly from Excel. Note that the "^M" shown here are
actually carriage returns in the file. I just loaded it into vi and copied
a few lines into this message.
When I run the program, I get this error:
Traceback (most recent call last):
File "samplecsv", line 3, in ?
for row in reader:
_csv.Error: newline inside string
I've tried telling the csv.reader that the lineterminator is '\n' or '\r'
in place of its default '\n\r', but neither worked.
How do other folks use the csv module to read Excel files?
BTW, I'm running this on a Mac OS X machine. I've tried this with CSVs
from Excel running on both Windows and Mac and it comes out the same.
(Nice that it's consistent.)
--
Lance E Sloan, Systems Research Programmer III
U-M WATS: Web Applications, Technologies, and Solutions
Full-service web and database design, development, and hosting.
http://www.itcs.umich.edu/wats/ - "Putting U on the Web"