code: def attr_val_itr(str_, avs_sep=":", vs_sep=",", as_sep=";"):
      
      for rel in parse_list(str_, as_sep):
          if avs_sep not in rel or rel.endswith(avs_sep):
              continue
  
          (_attr, _values) = parse_list(rel, avs_sep)
  
          if vs_sep in str(_values):
              _values = parse_list(_values, vs_sep)
  
          if _values:
              yield (_attr, _values)
docs: Atrribute and value pair parser.
  
      :param str_: String represents a list of pairs of attribute and value
      :param avs_sep: char to separate attribute and values
      :param vs_sep: char to separate values
      :param as_sep: char to separate attributes