Kaydet (Commit) 7424dd35 authored tarafından Georg Brandl's avatar Georg Brandl

#5975: add unix_dialect to csv module.

üst 347fe5ce
...@@ -187,6 +187,15 @@ The :mod:`csv` module defines the following classes: ...@@ -187,6 +187,15 @@ The :mod:`csv` module defines the following classes:
TAB-delimited file. It is registered with the dialect name ``'excel-tab'``. TAB-delimited file. It is registered with the dialect name ``'excel-tab'``.
.. class:: unix_dialect()
The :class:`unix_dialect` class defines the usual properties of a CSV file
generated on UNIX systems, i.e. using ``'\n'`` as line terminator and quoting
all fields. It is registered with the dialect name ``'unix'``.
.. versionadded:: 3.2
.. class:: Sniffer() .. class:: Sniffer()
The :class:`Sniffer` class is used to deduce the format of a CSV file. The :class:`Sniffer` class is used to deduce the format of a CSV file.
......
...@@ -20,7 +20,7 @@ __all__ = [ "QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE", ...@@ -20,7 +20,7 @@ __all__ = [ "QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
"unregister_dialect", "__version__", "DictReader", "DictWriter" ] "unregister_dialect", "__version__", "DictReader", "DictWriter" ]
class Dialect: class Dialect:
"""Describe an Excel dialect. """Describe a CSV dialect.
This must be subclassed (see csv.excel). Valid attributes are: This must be subclassed (see csv.excel). Valid attributes are:
delimiter, quotechar, escapechar, doublequote, skipinitialspace, delimiter, quotechar, escapechar, doublequote, skipinitialspace,
...@@ -65,6 +65,16 @@ class excel_tab(excel): ...@@ -65,6 +65,16 @@ class excel_tab(excel):
delimiter = '\t' delimiter = '\t'
register_dialect("excel-tab", excel_tab) register_dialect("excel-tab", excel_tab)
class unix_dialect(Dialect):
"""Describe the usual properties of Unix-generated CSV files."""
delimiter = ','
quotechar = '"'
doublequote = True
skipinitialspace = False
lineterminator = '\n'
quoting = QUOTE_ALL
register_dialect("unix", unix_dialect)
class DictReader: class DictReader:
def __init__(self, f, fieldnames=None, restkey=None, restval=None, def __init__(self, f, fieldnames=None, restkey=None, restval=None,
......
...@@ -515,6 +515,15 @@ class TestEscapedExcel(TestCsvBase): ...@@ -515,6 +515,15 @@ class TestEscapedExcel(TestCsvBase):
def test_read_escape_fieldsep(self): def test_read_escape_fieldsep(self):
self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) self.readerAssertEqual('abc\\,def\r\n', [['abc,def']])
class TestDialectUnix(TestCsvBase):
dialect = 'unix'
def test_simple_writer(self):
self.writerAssertEqual([[1, 'abc def', 'abc']], '"1","abc def","abc"\n')
def test_simple_reader(self):
self.readerAssertEqual('"1","abc def","abc"\n', [['1', 'abc def', 'abc']])
class QuotedEscapedExcel(csv.excel): class QuotedEscapedExcel(csv.excel):
quoting = csv.QUOTE_NONNUMERIC quoting = csv.QUOTE_NONNUMERIC
escapechar = '\\' escapechar = '\\'
......
...@@ -51,7 +51,9 @@ Core and Builtins ...@@ -51,7 +51,9 @@ Core and Builtins
Library Library
------- -------
- #7761: telnetlib.interact failures on Windows fixed. - Issue #5975: Add csv.unix_dialect class.
- Issue #7761: telnetlib.interact failures on Windows fixed.
- logging: Added style option to Formatter to allow %, {} or $-formatting. - logging: Added style option to Formatter to allow %, {} or $-formatting.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment