Skip to content

Commit 7c0faaa

Browse files
committed
gh-142188: Fix csv.Sniffer to handle CR and mixed line endings
1 parent eb89286 commit 7c0faaa

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

Lib/csv.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def _guess_delimiter(self, data, delimiters):
364364
"""
365365
from collections import Counter, defaultdict
366366

367-
data = list(filter(None, data.split('\n')))
367+
data = list(filter(None, data.splitlines()))
368368

369369
# build frequency tables
370370
chunkLength = min(10, len(data))

Lib/test/test_csv.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,6 +1517,12 @@ def test_zero_mode_tie_order_colon_first(self):
15171517
with self.assertRaisesRegex(csv.Error, "Could not determine delimiter"):
15181518
sniffer.sniff(sample)
15191519

1520+
def test_sniff_mixed_newlines(self):
1521+
# gh-142188: Sniffer should handle CR and mixed newlines
1522+
sample = "User,ID\rAlice,001\nBob,002"
1523+
sniffer = csv.Sniffer()
1524+
dialect = sniffer.sniff(sample)
1525+
self.assertEqual(dialect.delimiter, ',')
15201526

15211527
class NUL:
15221528
def write(s, *args):

0 commit comments

Comments
 (0)