diff options
author | Skip Montanaro <skip@pobox.com> | 2005-12-28 15:37:25 (GMT) |
---|---|---|
committer | Skip Montanaro <skip@pobox.com> | 2005-12-28 15:37:25 (GMT) |
commit | 91bb70c5c07c2e73535638df2baadb302d9d71d2 (patch) | |
tree | 1e9d4be34eb15ca7a78232ddc7065da820be12ff | |
parent | e08fa29d0e5bf02006ae30d79c31a6fd02d62068 (diff) | |
download | cpython-91bb70c5c07c2e73535638df2baadb302d9d71d2.zip cpython-91bb70c5c07c2e73535638df2baadb302d9d71d2.tar.gz cpython-91bb70c5c07c2e73535638df2baadb302d9d71d2.tar.bz2 |
Fix for problem with Sniffer class. If your delimiter is whitespace and the
last field was empty it would strip the delimiter and incorrectly guess that
"" was the delimiter. Reported in c.l.py by Laurent Laporte. Will
backport.
-rw-r--r-- | Lib/csv.py | 2 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 5 |
2 files changed, 5 insertions, 2 deletions
@@ -271,7 +271,7 @@ class Sniffer: for char in ascii: metaFrequency = charFrequency.get(char, {}) # must count even if frequency is 0 - freq = line.strip().count(char) + freq = line.count(char) # value is the mode metaFrequency[freq] = metaFrequency.get(freq, 0) + 1 charFrequency[char] = metaFrequency diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index f1f183f..0ad77ef 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -836,7 +836,6 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back 'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow' 'Stonecutters Seafood and Chop House':'Lemont':'IL':'12/19/02':'Week Back' """ - header = '''\ "venue","city","state","date","performers" ''' @@ -852,6 +851,8 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back 47483648;43.0;170;abc;def ''' + sample5 = "aaa\tbbb\r\nAAA\t\r\nBBB\t\r\n" + def test_has_header(self): sniffer = csv.Sniffer() self.assertEqual(sniffer.has_header(self.sample1), False) @@ -879,6 +880,8 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back self.assertEqual(dialect.delimiter, "/") dialect = sniffer.sniff(self.sample4) self.assertEqual(dialect.delimiter, ";") + dialect = sniffer.sniff(self.sample5) + self.assertEqual(dialect.delimiter, "\t") if not hasattr(sys, "gettotalrefcount"): if test_support.verbose: print "*** skipping leakage tests ***" |