def load(self):
self._validate()<EOL>self._logger.logging_load()<EOL>self.encoding = get_file_encoding(self.source, self.encoding)<EOL>if six.PY3:<EOL><INDENT>self._csv_reader = csv.reader(<EOL>io.open(self.source, "<STR_LIT:r>", encoding=self.encoding),<EOL>delimiter=self.delimiter,<EOL>quotechar=self.quotechar,<EOL>strict=True,<EOL>skipinitialspace=True,<EOL>)<EOL><DEDENT>else:<EOL><INDENT>self._csv_reader = csv.reader(<EOL>_utf_8_encoder(io.open(self.source, "<STR_LIT:r>", encoding=self.encoding)),<EOL>delimiter=self.delimiter,<EOL>quotechar=self.quotechar,<EOL>strict=True,<EOL>skipinitialspace=True,<EOL>)<EOL><DEDENT>formatter = CsvTableFormatter(self._to_data_matrix())<EOL>formatter.accept(self)<EOL>return formatter.to_table_data()<EOL>
Extract tabular data as |TableData| instances from a CSV file.
|load_source_desc_file|

:return:
    Loaded table data.
    |load_table_name_desc|

    ===================  ========================================
    Format specifier     Value after the replacement
    ===================  ========================================
    ``%(filename)s``     |filename_desc|
    ``%(format_name)s``  ``"csv"``
    ``%(format_id)s``    |format_id_desc|
    ``%(global_id)s``    |global_id|
    ===================  ========================================
:rtype: |TableData| iterator
:raises pytablereader.DataError:
    If the CSV data is invalid.

.. seealso::
    :py:func:`csv.reader`