code: def parse_qsl (qs, keep_blank_values=0, strict_parsing=0):
      
      pairs = []
      name_value_amp = qs.split('&')
      for name_value in name_value_amp:
          if ';' in name_value:
              pairs.extend([x, ';'] for x in name_value.split(';'))
              pairs[-1][1] = '&'
          else:
              pairs.append([name_value, '&'])
      pairs[-1][1] = ''
      r = []
      for name_value, sep in pairs:
          nv = name_value.split('=', 1)
          if len(nv) != 2:
              if strict_parsing:
                  raise ValueError("bad query field: %r" % name_value)
              elif len(nv) == 1:
                  # None value indicates missing equal sign
                  nv = (nv[0], None)
              else:
                  continue
          if nv[1] or keep_blank_values:
              name = urllib.unquote(nv[0].replace('+', ' '))
              if nv[1]:
                  value = urllib.unquote(nv[1].replace('+', ' '))
              else:
                  value = nv[1]
              r.append((name, value, sep))
      return r
docs: Parse a query given as a string argument.
  
      @param qs: URL-encoded query string to be parsed
      @type qs: string
      @param keep_blank_values: flag indicating whether blank values in
          URL encoded queries should be treated as blank strings.  A
          true value indicates that blanks should be retained as blank
          strings.  The default false value indicates that blank values
          are to be ignored and treated as if they were  not included.
      @type keep_blank_values: bool
      @param strict_parsing: flag indicating what to do with parsing errors. If
          false (the default), errors are silently ignored. If true,
          errors raise a ValueError exception.
      @type strict_parsing: bool
      @returns: list of triples (key, value, separator) where key and value
        are the splitted CGI parameter and separator the used separator
        for this CGI parameter which is either a semicolon or an ampersand
      @rtype: list of triples