[ python-Bugs-1431091 ] CSV Sniffer fails to report mismatch of column counts
SourceForge.net
noreply at sourceforge.net
Wed Apr 11 17:59:01 CEST 2007
Bugs item #1431091, was opened at 2006-02-13 23:47
Message generated for change (Comment added) made by tekkaman
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1431091&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Extension Modules
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Vinko (vvrsalob)
Assigned to: Andrew McNamara (andrewmcnamara)
Summary: CSV Sniffer fails to report mismatch of column counts
Initial Comment:
If one line of a CSV file is missing one or more
commas, the delimiter detection code of the Sniffer
class fails, setting delimiter to an empty string.
This leads to a totally misleading error when using
has_header().
This code shows the problem (Python 2.4.2, FC3 and
Ubuntu Breezy):
import csv
str1 = "a,b,c,d\r\n1,2,foo bar,dead
beef\r\nthis,line,is,ok\r\n"
str2 = "a,b,c,d\r\n1,2,foo bar,dead beef\r\nthis,line
is,not\r\n"
s = csv.Sniffer()
d1 = s.sniff(str1)
d2 = s.sniff(str2)
for line in str1.split('\r\n'):
print line.count(',')
print d1.delimiter
print s.has_header(str1)
for line in str2.split('\r\n'):
print line.count(',')
print d2.delimiter
print s.has_header(str2)
----------------------------------------------------------------------
Comment By: Simone Leo (tekkaman)
Date: 2007-04-11 17:59
Message:
Logged In: YES
user_id=891539
Originator: NO
Problem is still there as of Python 2.4.3.
Trying to read in a file whose lines have a different number of fields, I
get:
Traceback (most recent call last):
File "../myscript.py", line 59, in ?
main()
File "../myscript.py", line 30, in main
reader = csv.reader(fin, dialect)
TypeError: bad argument type for built-in operation
where "dialect" has been sniffed by feeding the first two lines to the
Sniffer.
What I expect is to either:
1. get different sized rows, with no exception raised
2. get a csv.Error instead of the TypeError above
Thanks
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1431091&group_id=5470
More information about the Python-bugs-list
mailing list