summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew McNamara <andrewm@object-craft.com.au>2005-01-10 01:04:40 (GMT)
committerAndrew McNamara <andrewm@object-craft.com.au>2005-01-10 01:04:40 (GMT)
commit36a7691c2dc4a11ceebacb149e69b01226962d69 (patch)
tree47971ea2094d4947e5a11613ebcd9db9da87f95e
parent41e4faa82bdf4fb601a97565bf30ee683c4bfd50 (diff)
downloadcpython-36a7691c2dc4a11ceebacb149e69b01226962d69.zip
cpython-36a7691c2dc4a11ceebacb149e69b01226962d69.tar.gz
cpython-36a7691c2dc4a11ceebacb149e69b01226962d69.tar.bz2
Fix parsing of csv files with escapes (escape character previously would be
left in stream).
-rw-r--r--Lib/test/test_csv.py4
-rw-r--r--Modules/_csv.c8
2 files changed, 2 insertions, 10 deletions
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py
index 6c47c6e..66b0ea9 100644
--- a/Lib/test/test_csv.py
+++ b/Lib/test/test_csv.py
@@ -227,10 +227,10 @@ class Test_Csv(unittest.TestCase):
self.assertRaises(csv.Error, self._read_test, ['a,b\r\nc,d'], [])
def test_read_escape(self):
- self._read_test(['a,\\b,c'], [['a', '\\b', 'c']], escapechar='\\')
+ self._read_test(['a,\\b,c'], [['a', 'b', 'c']], escapechar='\\')
self._read_test(['a,b\\,c'], [['a', 'b,c']], escapechar='\\')
self._read_test(['a,"b\\,c"'], [['a', 'b,c']], escapechar='\\')
- self._read_test(['a,"b,\\c"'], [['a', 'b,\\c']], escapechar='\\')
+ self._read_test(['a,"b,\\c"'], [['a', 'b,c']], escapechar='\\')
self._read_test(['a,"b,c\\""'], [['a', 'b,c"']], escapechar='\\')
self._read_test(['a,"b,c"\\'], [['a', 'b,c\\']], escapechar='\\')
diff --git a/Modules/_csv.c b/Modules/_csv.c
index 893a273..13445b8 100644
--- a/Modules/_csv.c
+++ b/Modules/_csv.c
@@ -584,10 +584,6 @@ parse_process_char(ReaderObj *self, char c)
break;
case ESCAPED_CHAR:
- if (c != dialect->escapechar &&
- c != dialect->delimiter &&
- c != dialect->quotechar)
- parse_add_char(self, dialect->escapechar);
parse_add_char(self, c);
self->state = IN_FIELD;
break;
@@ -642,10 +638,6 @@ parse_process_char(ReaderObj *self, char c)
break;
case ESCAPE_IN_QUOTED_FIELD:
- if (c != dialect->escapechar &&
- c != dialect->delimiter &&
- c != dialect->quotechar)
- parse_add_char(self, dialect->escapechar);
parse_add_char(self, c);
self->state = IN_QUOTED_FIELD;
break;