在Python中构造URI?

2024-09-27 00:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个Java程序转换为Python,我目前一直在做的一件事是在Python中使用URI。我在Python中找到了urllib.response,但我正在努力找出如何利用它

我试图用这个URI获取用户信息(特别是用户名和密码)、主机和路径。在Java中,有相关的方法(getUserInfo()getHost()getPath())用于此,但是我在Python中很难找到对应的方法,即使在查找了urllib.responsePython文档之后也是如此

Java中的等效代码为:

URI dbUri = new URI(env);
username = dbUri.getUserInfo().split(":")[0];
password = dbUri.getUserInfo().split(":")[1];
dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath();   

可以使用什么适当的方法将其转换为Python


Tags: 方法用户信息利用responseurijavaurllib
2条回答

似乎您希望使用类似于urllib.parse.urlparse的东西

https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlparse

from urllib.parse import urlparse

db_url = urlparse(raw_url_string)

username = db_url.username
password = db_url.password
host = db_url.net_loc
path = db_url.path
...

您可能需要对此进行一些调整。在参数方面urlparseurlsplit之间存在细微差别。然后您可以使用urlunparseunsplit中的一个

代码

from urllib import parse
from urllib.parse import urlsplit

url = 'http://localhost:5432/postgres?user=postgres&password=somePassword'

split_url = urlsplit(url)

hostname = split_url.netloc
path = split_url.path

params = dict(parse.parse_qsl(split_url.query))
username = params['user']
password = params['password']

db_url = "jdbc:postgresql://" + hostname + path
print(db_uri)

输出

jdbc:postgresql://localhost:5432/postgres

相关问题 更多 >

    热门问题