code: def superReadCSV(filepath, first_codec='UTF_8', usecols=None,
                   low_memory=False, dtype=None, parse_dates=True,
                   sep=',', chunksize=None, verbose=False, **kwargs):
  
          
  
          if isinstance(filepath, pd.DataFrame):
              return filepath
  
          assert isinstance(first_codec, str), "first_codec must be a string"
  
          codecs = ['UTF_8', 'ISO-8859-1', 'ASCII', 'UTF_16', 'UTF_32']
          try:
              codecs.remove(first_codec)
          except ValueError as not_in_list:
              pass
          codecs.insert(0, first_codec)
          errors = []
          for c in codecs:
              try:
  
                  return pd.read_csv(filepath,
                                     usecols=usecols,
                                     low_memory=low_memory,
                                     encoding=c,
                                     dtype=dtype,
                                     parse_dates=parse_dates,
                                     sep=sep,
                                     chunksize=chunksize,
                                     **kwargs)
              # Need to catch `UnicodeError` here, not just `UnicodeDecodeError`,
              # because pandas 0.23.1 raises it when decoding with UTF_16 and the
              # file is not in that format:
              except (UnicodeError, UnboundLocalError) as e:
                  errors.append(e)
              except Exception as e:
                  errors.append(e)
                  if 'tokenizing' in str(e):
                      pass
                  else:
                      raise
          if verbose:
              [print(e) for e in errors]
  
          raise UnicodeDecodeError("Tried {} codecs and failed on all: \n CODECS: {} \n FILENAME: {}".format(
                          len(codecs), codecs, os.path.basename(filepath)))
docs: A wrap to pandas read_csv with mods to accept a dataframe or
          filepath. returns dataframe untouched, reads filepath and returns
          dataframe based on arguments.