Python中是否有URL的预定义类?

2024-04-24 11:05:45 发布

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

我在python模块、Django、Zope或python中的任何地方寻找类似java.net.URL的东西。 我更希望从语义原因,因为对相关程序的分析结果表明,URL在其中起着至关重要的作用。其结果是这样的URL类在该程序中也将有很大的实际使用价值。在

当然,我可以自己写这样的课,但在我开始改头换面之前,我想看看周围的情况。在

我看了urllib2和{a3}。urlparse基本上具有我需要的功能,但它没有将其封装到java.net.URL这样的类中。关于我对程序的分析,它是颠倒的。在

我还研究了urlparseSplitResult和{}类的源代码。它们有一些基本功能,可以用于子类化。但我必须将其余的urlparse函数重写为子类方法。在

我还发现了mxURL - Flexible URL Datatype for Python。这和我真正想要的非常接近。只是对我来说这似乎是一种过度的杀戮。在

有人能提出另一个选择吗?我应该着手重新发明轮子吗?在

我的解决方案:

为了得到我的URL类,我基本上做了两件事:

  1. urlparse.ResultMixin继承。在
  2. 定义只调用urlparse.urlparse()并将结果转换为 URL实例的参数。在

Tags: 模块django程序zopeurlnet地方语义
3条回答

您可能需要考虑查看一下furl,因为它可能是您需求的答案。在

截至2018年,我们拥有:

目前只有furl得到了维护,但它的主要缺点是它是可变的,这当然不鼓励最佳实践。(有一个很好的现代引用-pathlib,它由不可变的类组成。)

总的来说,有一种轻松的OO方法来解析和构造url是很受欢迎的。在

urlparse将url封装到一个名为ParseResult的类中,因此可以将其视为这些类的工厂函数。直接来自Python文档:

>>> urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')

如果您迫切需要一个名为URL的类来封装URL,请使用别名(URL = urlparse.ParseResult)或创建一个适配器。在

相关问题 更多 >