解析参考:
urllib.parse._NetlocResultMixinStr
def parse_host_info(net_location):
_, _, host_info = net_location.rpartition('@')
_, hava_open_bracket, remaining = host_info.partition('[')
if hava_open_bracket:
hostname, _, port_part = remaining.partition(']')
_, _, port = port_part.rpartition(':')
ipv6_addr = ipaddress.IPv6Address(hostname)
if ipv6_addr.ipv4_mapped:
hostname = ipv6_addr.ipv4_mapped.compressed
else:
if host_info.find(":") >= 0:
hostname, _, port = host_info.rpartition(':')
else:
hostname, port = (host_info, "")
if not port:
port = ""
return hostname, port
def parse_user_info(net_location):
userinfo, have_info, host_info = net_location.rpartition('@')
if have_info:
username, have_password, password = userinfo.partition(':')
if not have_password:
password = None
else:
username = password = None
return username, password

被折叠的 条评论
为什么被折叠?



