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.
1 parent 9bb56a6 commit 67b7b98Copy full SHA for 67b7b98
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
@@ -123,6 +123,9 @@ Core and Builtins
123
Library
124
-------
125
126
+- Issue #16013: Fix CSV Reader parsing issue with ending quote characters.
127
+ Patch by Serhiy Storchaka.
128
129
- Issue #15421: fix an OverflowError in Calendar.itermonthdates() after
130
datetime.MAXYEAR. Patch by Cédric Krier.
131
Modules/_csv.c
@@ -759,9 +759,13 @@ Reader_iternext(ReaderObj *self)
759
lineobj = PyIter_Next(self->input_iter);
760
if (lineobj == NULL) {
761
/* End of input OR exception */
762
- if (!PyErr_Occurred() && self->field_len != 0)
763
- PyErr_Format(error_obj,
764
- "newline inside string");
+ if (!PyErr_Occurred() && (self->field_len != 0 ||
+ self->state == IN_QUOTED_FIELD)) {
+ if (self->dialect->strict)
765
+ PyErr_SetString(error_obj, "unexpected end of data");
766
+ else if (parse_save_field(self) >= 0)
767
+ break;
768
+ }
769
return NULL;
770
}
771
if (!PyUnicode_Check(lineobj)) {
0 commit comments