code: def get_nts(self):
          
          data = []
          nt_obj = None
          with open(self.fin) as fin_stream:
              for lnum, line in enumerate(fin_stream, 1):
                  try:
                      line = line.rstrip('\r\n') # chomp
                      # Obtain Data if headers have been collected from the first line
                      if nt_obj is not None:
                          flds = re.split(self.sep, line)
                          self.convert_ints_floats(flds)
                          flds[6] = [s.strip() for s in flds[6].split(',')]
                          ntdata = nt_obj._make(flds)
                          data.append(ntdata)
                      # Obtain the header
                      else:
                          nt_obj = self._init_nt_hdr(line)
                  except RuntimeError:
                      # Print headers
                      #if nt_obj is not None:
                      #  sys.stdout.write("{HDRS}\n".format(HDRS='\n'.join(nt_obj._fields)))
                      flds = re.split(self.sep, line)
                      print(len(flds), "FIELDS")
                      print(flds)
                      #raise Exception("{FIN}({LNUM}): {LINE}\n".format(
                      #  FIN=self.fin, LNUM=lnum, LINE=line))
                      # JUST SKIP LINES WITH INCOMPLETE DATA, BUT PRINT ERROR MESSAGE
                      sys.stdout.write("**ERROR: {FIN}({LNUM}): {LINE}\n".format(
                          FIN=self.fin, LNUM=lnum, LINE=line))
              if self.log is not None:
                  self.log.write("  {:9} lines READ:  {}\n".format(len(data), self.fin))
          return data
docs: Read csv/tsv file and return specified data in a list of lists.