[ python-Bugs-789519 ] CSV reader does not parse Mac line endings
SourceForge.net
noreply at sourceforge.net
Thu Jan 13 05:10:21 CET 2005
Bugs item #789519, was opened at 2003-08-16 07:16
Message generated for change (Comment added) made by andrewmcnamara
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=789519&group_id=5470
Category: Python Library
Group: Python 2.3
>Status: Closed
>Resolution: Rejected
Priority: 5
Submitted By: Larry Meyn (lmeyn)
>Assigned to: Andrew McNamara (andrewmcnamara)
Summary: CSV reader does not parse Mac line endings
Initial Comment:
#Test code:
import csv
import traceback
class excel_mac(csv.Dialect):
delimiter = ','
quotechar = '"'
doublequote = True
skipinitialspace = False
lineterminator = '\r'
quoting = csv.QUOTE_MINIMAL
csv.register_dialect("excel_mac", excel_mac)
class excel_unix(csv.Dialect):
delimiter = ','
quotechar = '"'
doublequote = True
skipinitialspace = False
lineterminator = '\n'
quoting = csv.QUOTE_MINIMAL
csv.register_dialect("excel_unix", excel_unix)
testdata = range(10)
for dialect in ["excel","excel_unix","excel_mac"]:
try:
print '\n Testing dialect "%s"' % dialect
test = file('test.csv','w')
writer = csv.writer(test,dialect=dialect)
for i in range(3):
writer.writerow(testdata)
test.close()
test = file('test.csv','r')
reader = csv.reader(test,dialect=dialect)
for row in reader:
print row
except:
traceback.print_exc()
#Results
"""
Testing dialect "excel"
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
Testing dialect "excel_unix"
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
Testing dialect "excel_mac"
Traceback (most recent call last):
File "/Users/lmeyn/Desktop/testcsv.py", line 36, in ?
print row
Error: newline inside string
"""
----------------------------------------------------------------------
>Comment By: Andrew McNamara (andrewmcnamara)
Date: 2005-01-13 15:10
Message:
Logged In: YES
user_id=698599
I'm going to close this issue - we will attempt to improve the documentation,
so as to bring this issue to user's awareness, but the supplied iterator
needs to return "lines" - on a file using \r, this means using universal
newline mode.
----------------------------------------------------------------------
Comment By: Bill Bumgarner (bbum)
Date: 2003-08-22 04:02
Message:
Logged In: YES
user_id=103811
Why doesn't the csv module use the lineterminator for reading
files? As it is, the lineterminator appears to be used only for the
writing of rows to a file.
This, of course, means that csv will quite happily write a file that it
cannot subsequently read with the same dialect.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2003-08-22 02:01
Message:
Logged In: YES
user_id=44345
We've been discussing this bug on the csv mailing list. I suspect
we will make a change to U mode for 2.3.1 and 2.4, though we
have yet to test the proposed change.
Skip
----------------------------------------------------------------------
Comment By: Larry Meyn (lmeyn)
Date: 2003-08-22 01:44
Message:
Logged In: YES
user_id=28540
If I open files using the universal, 'U', mode this is not a problem.
Too bad the 'U' mode is not the default. (I know, there is a lot of
*nix python code out there that opens binary files as text, and it
would all break if 'U' were the default.)
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=789519&group_id=5470
More information about the Python-bugs-list
mailing list