def uri(data): ret = {"raw": data} parts = urlparse(data) ret["scheme"] = parts.scheme or '' ret["host"] = parts.netloc.rsplit(":", 1)[0] or None ret["port"] = parts.port or 80 if parts.path and parts.params: ret["path"] = ";".join([parts.path, parts.params]) elif parts.path: ret["path"] = parts.path elif parts.params: # Don't think this can happen ret["path"] = ";" + parts.path else: ret["path"] = '' ret["query"] = parts.query or '' ret["fragment"] = parts.fragment or '' return ret