Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7424dd3

Browse files
committed
#5975: add unix_dialect to csv module.
1 parent 347fe5c commit 7424dd3

4 files changed

Lines changed: 32 additions & 2 deletions

File tree

Doc/library/csv.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,15 @@ The :mod:`csv` module defines the following classes:
187187
TAB-delimited file. It is registered with the dialect name ``'excel-tab'``.
188188

189189

190+
.. class:: unix_dialect()
191+
192+
The :class:`unix_dialect` class defines the usual properties of a CSV file
193+
generated on UNIX systems, i.e. using ``'\n'`` as line terminator and quoting
194+
all fields. It is registered with the dialect name ``'unix'``.
195+
196+
.. versionadded:: 3.2
197+
198+
190199
.. class:: Sniffer()
191200

192201
The :class:`Sniffer` class is used to deduce the format of a CSV file.

Lib/csv.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"unregister_dialect", "__version__", "DictReader", "DictWriter" ]
2121

2222
class Dialect:
23-
"""Describe an Excel dialect.
23+
"""Describe a CSV dialect.
2424
2525
This must be subclassed (see csv.excel). Valid attributes are:
2626
delimiter, quotechar, escapechar, doublequote, skipinitialspace,
@@ -65,6 +65,16 @@ class excel_tab(excel):
6565
delimiter = '\t'
6666
register_dialect("excel-tab", excel_tab)
6767

68+
class unix_dialect(Dialect):
69+
"""Describe the usual properties of Unix-generated CSV files."""
70+
delimiter = ','
71+
quotechar = '"'
72+
doublequote = True
73+
skipinitialspace = False
74+
lineterminator = '\n'
75+
quoting = QUOTE_ALL
76+
register_dialect("unix", unix_dialect)
77+
6878

6979
class DictReader:
7080
def __init__(self, f, fieldnames=None, restkey=None, restval=None,

Lib/test/test_csv.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,15 @@ def test_escape_fieldsep(self):
515515
def test_read_escape_fieldsep(self):
516516
self.readerAssertEqual('abc\\,def\r\n', [['abc,def']])
517517

518+
class TestDialectUnix(TestCsvBase):
519+
dialect = 'unix'
520+
521+
def test_simple_writer(self):
522+
self.writerAssertEqual([[1, 'abc def', 'abc']], '"1","abc def","abc"\n')
523+
524+
def test_simple_reader(self):
525+
self.readerAssertEqual('"1","abc def","abc"\n', [['1', 'abc def', 'abc']])
526+
518527
class QuotedEscapedExcel(csv.excel):
519528
quoting = csv.QUOTE_NONNUMERIC
520529
escapechar = '\\'

Misc/NEWS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ Core and Builtins
5151
Library
5252
-------
5353

54-
- #7761: telnetlib.interact failures on Windows fixed.
54+
- Issue #5975: Add csv.unix_dialect class.
55+
56+
- Issue #7761: telnetlib.interact failures on Windows fixed.
5557

5658
- logging: Added style option to Formatter to allow %, {} or $-formatting.
5759

0 commit comments

Comments
 (0)