我正在寻找类似 java.net.URL 的内容在 python 模块、Django、Zope 或 Python 中的任何地方。 我希望它最好是从语义原因,因为相关程序的分析结果表明URL在其中起着至关重要的作用。结果是这样的 URL 类在该程序中也将有很大的实际用途。
我当然可以自己编写这样的类,但在我开始重新发明轮子之前,我想先看看周围。
我看过urllib2和 urlparse . urlparse
基本上有我需要的功能,但它没有像java.net.URL
那样封装成一个类。关于我对我的程序的分析,它是颠倒的。
我还在 SplitResult
和 ParseResult
类中查看了 urlparse
的源代码。它们具有一些基本功能,可用于子类化。但是我必须将其余的 urlparse 函数重写为子类方法。
我还找到了mxURL - Flexible URL Datatype for Python .它非常接近我真正想要的。只是对于我的目的来说,这似乎有点矫枉过正。
谁能提出另一种选择?我应该继续重新发明轮子吗?
我的解决方案:
为了获得我的 URL 类,我基本上做了两件事:
- 继承自
urlparse.ResultMixin
。 - 定义仅调用
urlparse.urlparse()
并将结果转换为 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
) 或创建一个适配器。
关于python - Python 中是否有预定义的 URL 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170295/