all Python 3Files & I/Oterm
csv.Dialect
csv — dialects
A class describing a CSV format: delimiter, quote character, line terminator and escaping rules. Subclass it to name your own format once.
Syntax
class MyDialect(csv.Dialect):
delimiter = ';'; quotechar = '"'; lineterminator = '\n'; quoting = csv.QUOTE_MINIMAL
Attributes are set at class level and you do not need an instance: reader and writer accept the class itself. A direct Dialect subclass must set every required attribute — delimiter, quotechar, lineterminator, quoting; a missing lineterminator raises TypeError when the writer is created. It is simpler to subclass csv.excel and change only what you need.
Examples
import csv
import io
class Semi(csv.excel):
delimiter = ';'
lineterminator = '\n'
out = io.StringIO()
csv.writer(out, Semi).writerow(['a', 'b;c'])
print(repr(out.getvalue())) # → 'a;"b;c"\n'
# Python 3.14+
import csv
import io
class Bad(csv.Dialect):
delimiter = ';'
try:
csv.writer(io.StringIO(), Bad)
except TypeError as e:
print(e) # → "lineterminator" must be a string, not NoneType
See also
Common errors
Open in the full glossarydocs.python.orgReport an inaccuracy