import csv dialect = csv.Dialect dialect.delimiter = ';' dialect.other_param = 'val' writer = csv.writer(csvfile, dialect=dialect)
Класс Dialect
модуля csv
это контейнерный класс с атрибутами, которые используются для определения параметров для конкретного экземпляра csv.reader()
или csv.writer()
.
Чтобы упростить задание формата входных и выходных записей, конкретные параметры форматирования сгруппированы в диалекты.
При создании объектов чтения csv.reader()
или записи csv.writer()
программист может указать строку или подкласс класса csv.Dialect
в качестве параметра диалекта.
В дополнение к параметру диалекта или вместо него программист может также указать отдельные параметры форматирования, которые имеют те же имена, что и атрибуты, определенные ниже:
csv.Dialect
.Dialect.delimiter
:Атрибут Dialect.delimiter
- односимвольная строка, используемая для разделения полей. По умолчанию это ','
.
>>> import csv >>> csv.Dialect.delimiter = ';' >>> csv.Dialect.delimiter # ';'
Dialect.doublequote
:Атрибут Dialect.doublequote
управляет тем, как экземпляры Dialect.quotechar
, появляющиеся внутри поля, должны сами заключаться в кавычки. Когда True
, то символ удваивается. Когда False
, то Dialect.escapechar
используется в качестве префикса к кавычке. По умолчанию установлено значение True
.
На выходе, если quotechar
имеет значение False
и не задан escape-символ escapechar
, возникает ошибка, если в поле найдена кавычка.
>>> import csv >>> print(csv.Dialect.doublequote) # True >>> csv.Dialect.doublequote = False >>> csv.Dialect.doublequote # False
Dialect.escapechar
:Атрибут Dialect.escapechar
односимвольная строка, используемая csv.writer()
для экранирования разделителя Dialect.delimiter
, если в Dialect.quoting
установлено значение cvs.QUOTE_NONE
и Dialect.quotechar
, если в Dialect.doublequote
указано значение False
.
При чтении escape-символ Dialect.escapechar
удаляет любое специальное значение из следующего символа. По умолчанию None
, что отключает экранирование.
>>> import csv >>> print(csv.Dialect.escapechar) # None >>> csv.Dialect.escapechar = '\\' >>> csv.Dialect.escapechar '\\'
Dialect.lineterminator
:Атрибут Dialect.lineterminator
- строка, используемая для завершения строк, созданных csv.writer()
. По умолчанию используется значение '\r\n'
.
Примечание. csv.reader()
жестко запрограммирован на распознавание либо '\r'
, либо '\n'
как конца строки и игнорирует lineterminator
. Это поведение может измениться в будущем.
>>> import csv >>> print(csv.Dialect.lineterminator) # None >>> csv.Dialect.lineterminator = '\n' >>> csv.Dialect.lineterminator '\n'
Dialect.quotechar
:Атрибут Dialect.quotechar
односимвольная строка, используемая для кавычек в полях, содержащих специальные символы, такие как разделитель Dialect.delimiter
или кавычка Dialect.quotechar
, или содержат символы новой строки. По умолчанию это пустая строка ''
.
>>> import csv >>> print(csv.Dialect.quotechar) # None >>> csv.Dialect.quotechar = '' >>> csv.Dialect.quotechar ''
Dialect.quoting
:Атрибут Dialect.quoting
определяет, когда кавычки должны генерироваться csv.writer()
и распознаваться csv.reader()
.
Может принимать любую из констант csv.QUOTE_*
, по умолчанию QUOTE_MINIMAL
.
>>> import csv >>> print(csv.Dialect.quoting) # None >>> csv.Dialect.quoting = csv.QUOTE_MINIMAL >>> csv.Dialect.quoting # 0
Dialect.skipinitialspace
:Атрибут Dialect.skipinitialspace
имеет значение по умолчанию False
. При значении True
- пробел, следующий сразу за разделителем Dialect.delimiter
игнорируется.
>>> import csv >>> print(csv.Dialect.skipinitialspace) # None >>> csv.Dialect.skipinitialspace = True >>> csv.Dialect.skipinitialspace # True
Dialect.strict
:Атрибут Dialect.strict
имеет значение по умолчанию False
. При значении True
, выдает исключение Error
при неправильной разметке CSV.
>>> import csv >>> print(csv.Dialect.strict) # None >>> csv.Dialect.strict = True >>> csv.Dialect.strict # True