Thanks to visit codestin.com Credit goes to github.com
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 9118a79 + 67b7b98 commit 49d1302Copy full SHA for 49d1302
3 files changed
Lib/test/test_csv.py
@@ -225,6 +225,15 @@ def test_read_eol(self):
225
self.assertRaises(csv.Error, self._read_test, ['a,b\nc,d'], [])
226
self.assertRaises(csv.Error, self._read_test, ['a,b\r\nc,d'], [])
227
228
+ def test_read_eof(self):
229
+ self._read_test(['a,"'], [['a', '']])
230
+ self._read_test(['"a'], [['a']])
231
+ self._read_test(['^'], [['\n']], escapechar='^')
232
+ self.assertRaises(csv.Error, self._read_test, ['a,"'], [], strict=True)
233
+ self.assertRaises(csv.Error, self._read_test, ['"a'], [], strict=True)
234
+ self.assertRaises(csv.Error, self._read_test,
235
+ ['^'], [], escapechar='^', strict=True)
236
+
237
def test_read_escape(self):
238
self._read_test(['a,\\b,c'], [['a', 'b', 'c']], escapechar='\\')
239
self._read_test(['a,b\\,c'], [['a', 'b,c']], escapechar='\\')
Misc/NEWS
@@ -31,6 +31,9 @@ Core and Builtins
31
Library
32
-------
33
34
+- Issue #16013: Fix CSV Reader parsing issue with ending quote characters.
35
+ Patch by Serhiy Storchaka.
36
37
- Issue #15421: Fix an OverflowError in Calendar.itermonthdates() after
38
datetime.MAXYEAR. Patch by Cédric Krier.
39
Modules/_csv.c
@@ -788,9 +788,14 @@ Reader_iternext(ReaderObj *self)
788
lineobj = PyIter_Next(self->input_iter);
789
if (lineobj == NULL) {
790
/* End of input OR exception */
791
- if (!PyErr_Occurred() && self->field_len != 0)
792
- PyErr_Format(_csvstate_global->error_obj,
793
- "newline inside string");
+ if (!PyErr_Occurred() && (self->field_len != 0 ||
+ self->state == IN_QUOTED_FIELD)) {
+ if (self->dialect->strict)
794
+ PyErr_SetString(_csvstate_global->error_obj,
795
+ "unexpected end of data");
796
+ else if (parse_save_field(self) >= 0)
797
+ break;
798
+ }
799
return NULL;
800
}
801
if (!PyUnicode_Check(lineobj)) {
0 commit comments