Skip to content

Commit 0ffdced

Browse files
jdevries3133ambv
andauthored
bpo-27752: improve documentation of csv.Dialect (GH-26795)
Co-authored-by: Łukasz Langa <[email protected]>
1 parent 1f7d646 commit 0ffdced

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

Doc/library/csv.rst

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ The :mod:`csv` module defines the following functions:
9494
:class:`Dialect` class or one of the strings returned by the
9595
:func:`list_dialects` function. The other optional *fmtparams* keyword arguments
9696
can be given to override individual formatting parameters in the current
97-
dialect. For full details about the dialect and formatting parameters, see
98-
section :ref:`csv-fmt-params`. To make it
97+
dialect. For full details about dialects and formatting parameters, see
98+
the :ref:`csv-fmt-params` section. To make it
9999
as easy as possible to interface with modules which implement the DB API, the
100100
value :const:`None` is written as the empty string. While this isn't a
101101
reversible transformation, it makes it easier to dump SQL NULL data values to
@@ -117,7 +117,7 @@ The :mod:`csv` module defines the following functions:
117117
Associate *dialect* with *name*. *name* must be a string. The
118118
dialect can be specified either by passing a sub-class of :class:`Dialect`, or
119119
by *fmtparams* keyword arguments, or both, with keyword arguments overriding
120-
parameters of the dialect. For full details about the dialect and formatting
120+
parameters of the dialect. For full details about dialects and formatting
121121
parameters, see section :ref:`csv-fmt-params`.
122122

123123

@@ -225,9 +225,21 @@ The :mod:`csv` module defines the following classes:
225225

226226
.. class:: Dialect
227227

228-
The :class:`Dialect` class is a container class relied on primarily for its
229-
attributes, which are used to define the parameters for a specific
230-
:class:`reader` or :class:`writer` instance.
228+
The :class:`Dialect` class is a container class whose attributes contain
229+
information for how to handle doublequotes, whitespace, delimiters, etc.
230+
Due to the lack of a strict CSV specification, different applications
231+
produce subtly different CSV data. :class:`Dialect` instances define how
232+
:class:`reader` and :class:`writer` instances behave.
233+
234+
All available :class:`Dialect` names are returned by :func:`list_dialects`,
235+
and they can be registered with specific :class:`reader` and :class:`writer`
236+
classes through their initializer (``__init__``) functions like this::
237+
238+
import csv
239+
240+
with open('students.csv', 'w', newline='') as csvfile:
241+
writer = csv.writer(csvfile, dialect='unix')
242+
^^^^^^^^^^^^^^
231243

232244

233245
.. class:: excel()
@@ -419,8 +431,8 @@ Reader objects (:class:`DictReader` instances and objects returned by the
419431

420432
Return the next row of the reader's iterable object as a list (if the object
421433
was returned from :func:`reader`) or a dict (if it is a :class:`DictReader`
422-
instance), parsed according to the current dialect. Usually you should call
423-
this as ``next(reader)``.
434+
instance), parsed according to the current :class:`Dialect`. Usually you
435+
should call this as ``next(reader)``.
424436

425437

426438
Reader objects have the following public attributes:
@@ -460,9 +472,9 @@ read CSV files (assuming they support complex numbers at all).
460472

461473
.. method:: csvwriter.writerow(row)
462474

463-
Write the *row* parameter to the writer's file object, formatted according to
464-
the current dialect. Return the return value of the call to the *write* method
465-
of the underlying file object.
475+
Write the *row* parameter to the writer's file object, formatted according
476+
to the current :class:`Dialect`. Return the return value of the call to the
477+
*write* method of the underlying file object.
466478

467479
.. versionchanged:: 3.5
468480
Added support of arbitrary iterables.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Documentation of csv.Dialect is more descriptive.

0 commit comments

Comments
 (0)