code: def itersplit_to_fields(str_,
                          fsep=DEFAULT_FSEP,
                          revtuple=None,
                          fields=[],
                          preparse=None):
      
      if preparse:
          str_ = preparse(str_)
      _fields = itersplit(str_, fsep)
  
      if revtuple is not None:
          try:
              values = (t[1] for t in izip_longest(revtuple._fields, _fields))
              return revtuple(*values)
          except Exception as e:
              log.error(revtuple)
              log.error(_fields)
              log.exception(e)
              raise
  
      return tuple(izip_longest(fields, _fields, fillvalue=None))
docs: Itersplit a string into a (named, if specified) tuple.
  
      Args:
          str_ (str): string to split
          fsep (str): field separator (delimiter to split by)
          revtuple (object): namedtuple (or class with a ``._fields`` attr)
              (optional)
          fields (list of str): field names (if revtuple is not specified)
          preparse (callable): function to parse str with before itersplitting
  
      Returns:
          tuple or revtuple: fields as a tuple or revtuple, if specified