def __init__(self, f, **kwds):
ParserBase.__init__(self, kwds)<EOL>self.data = None<EOL>self.buf = []<EOL>self.pos = <NUM_LIT:0><EOL>self.line_pos = <NUM_LIT:0><EOL>self.encoding = kwds['<STR_LIT>']<EOL>self.compression = kwds['<STR_LIT>']<EOL>self.memory_map = kwds['<STR_LIT>']<EOL>self.skiprows = kwds['<STR_LIT>']<EOL>if callable(self.skiprows):<EOL><INDENT>self.skipfunc = self.skiprows<EOL><DEDENT>else:<EOL><INDENT>self.skipfunc = lambda x: x in self.skiprows<EOL><DEDENT>self.skipfooter = _validate_skipfooter_arg(kwds['<STR_LIT>'])<EOL>self.delimiter = kwds['<STR_LIT>']<EOL>self.quotechar = kwds['<STR_LIT>']<EOL>if isinstance(self.quotechar, str):<EOL><INDENT>self.quotechar = str(self.quotechar)<EOL><DEDENT>self.escapechar = kwds['<STR_LIT>']<EOL>self.doublequote = kwds['<STR_LIT>']<EOL>self.skipinitialspace = kwds['<STR_LIT>']<EOL>self.lineterminator = kwds['<STR_LIT>']<EOL>self.quoting = kwds['<STR_LIT>']<EOL>self.usecols, self.usecols_dtype = _validate_usecols_arg(<EOL>kwds['<STR_LIT>'])<EOL>self.skip_blank_lines = kwds['<STR_LIT>']<EOL>self.warn_bad_lines = kwds['<STR_LIT>']<EOL>self.error_bad_lines = kwds['<STR_LIT>']<EOL>self.names_passed = kwds['<STR_LIT>'] or None<EOL>self.has_index_names = False<EOL>if '<STR_LIT>' in kwds:<EOL><INDENT>self.has_index_names = kwds['<STR_LIT>']<EOL><DEDENT>self.verbose = kwds['<STR_LIT>']<EOL>self.converters = kwds['<STR_LIT>']<EOL>self.dtype = kwds['<STR_LIT>']<EOL>self.thousands = kwds['<STR_LIT>']<EOL>self.decimal = kwds['<STR_LIT>']<EOL>self.comment = kwds['<STR_LIT>']<EOL>self._comment_lines = []<EOL>f, handles = _get_handle(f, '<STR_LIT:r>', encoding=self.encoding,<EOL>compression=self.compression,<EOL>memory_map=self.memory_map)<EOL>self.handles.extend(handles)<EOL>if hasattr(f, '<STR_LIT>'):<EOL><INDENT>self._make_reader(f)<EOL><DEDENT>else:<EOL><INDENT>self.data = f<EOL><DEDENT>self._col_indices = None<EOL>(self.columns, self.num_original_columns,<EOL>self.unnamed_cols) = self._infer_columns()<EOL>if len(self.columns) > <NUM_LIT:1>:<EOL><INDENT>self.columns, self.index_names, self.col_names, _ = (<EOL>self._extract_multi_indexer_columns(<EOL>self.columns, self.index_names, self.col_names<EOL>)<EOL>)<EOL>self.num_original_columns = len(self.columns)<EOL><DEDENT>else:<EOL><INDENT>self.columns = self.columns[<NUM_LIT:0>]<EOL><DEDENT>self.orig_names = list(self.columns)<EOL>if not self._has_complex_date_col:<EOL><INDENT>(index_names, self.orig_names, self.columns) = (<EOL>self._get_index_name(self.columns))<EOL>self._name_processed = True<EOL>if self.index_names is None:<EOL><INDENT>self.index_names = index_names<EOL><DEDENT><DEDENT>if self.parse_dates:<EOL><INDENT>self._no_thousands_columns = self._set_no_thousands_columns()<EOL><DEDENT>else:<EOL><INDENT>self._no_thousands_columns = None<EOL><DEDENT>if len(self.decimal) != <NUM_LIT:1>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if self.thousands is None:<EOL><INDENT>self.nonnum = re.compile(<EOL>r'<STR_LIT>'.format(decimal=self.decimal))<EOL><DEDENT>else:<EOL><INDENT>self.nonnum = re.compile(r'<STR_LIT>'.format(<EOL>thousands=self.thousands, decimal=self.decimal))<EOL><DEDENT>
Workhorse function for processing nested list into DataFrame

Should be replaced by np.genfromtxt eventually?