9.1.2 Dialects and Formatting Parameters

##
9.1.2 Dialects and Formatting Parameters

To make it easier to specify the format of input and output records, specific formatting parameters are grouped together into dialects. A dialect is a subclass of the `Dialect` class having a set of specific methods and a single `validate()` method. When creating `reader` or `writer` objects, the programmer can specify a string or a subclass of the `Dialect` class as the dialect parameter. In addition to, or instead of, the dialect parameter, the programmer can also specify individual formatting parameters, which have the same names as the attributes defined below for the `Dialect` class.

Dialects support the following attributes:

`delimiter`
  A one-character string used to separate fields. It defaults to `','`.

`doublequote`
  Controls how instances of quotechar appearing inside a field should be themselves be quoted. When `True`, the character is doubled. When `False`, the escapechar is used as a prefix to the quotechar. It defaults to `True`.

  On output, if doublequote is `False` and no escapechar is set, `Error` is raised if a quotechar is found in a field.

`escapechar`
  A one-character string used by the writer to escape the delimiter if quoting is set to `QUOTE_NONE` and the quotechar if doublequote is `False`. On reading, the escapechar removes any special meaning from the following character. It defaults to `None`, which disables escaping.

`lineterminator`
  The string used to terminate lines produced by the `writer`. It defaults to `'\r\n'`.

  Note: The `reader` is hard-coded to recognise either `'\r'` or `'\n'` as end-of-line, and ignores lineterminator. This behavior may change in the future.

`quotechar`
  A one-character string used to quote fields containing special characters, such as the delimiter or quotechar, or which contain new-line characters. It defaults to `'"'`.

`quoting`
  Controls when quotes should be generated by the writer and recognised by the reader. It can take on any of the `QUOTE_*` constants (see section 9.1.1) and defaults to `QUOTE_MINIMAL`.

`skipinitialspace`
  When `True`, whitespace immediately following the delimiter is ignored. The default is `False`.