Python中是否有URL的预定义类?
我正在寻找类似python模块、Django、Zope或python中任何地方的东西。 我希望它最好是从语义原因,因为对相关程序的分析结果表明URL在其中起着至关重要的作用。其结果是,这样的URL类在该程序中也将有很大的实际用途 当然,我可以自己写这样的课程,但在我开始重新发明轮子之前,我想四处看看 我确实看了看。Python中是否有URL的预定义类?,python,url,urlparse,Python,Url,Urlparse,我正在寻找类似python模块、Django、Zope或python中任何地方的东西。 我希望它最好是从语义原因,因为对相关程序的分析结果表明URL在其中起着至关重要的作用。其结果是,这样的URL类在该程序中也将有很大的实际用途 当然,我可以自己写这样的课程,但在我开始重新发明轮子之前,我想四处看看 我确实看了看。urlparse基本上具有我需要的功能,但它没有将其封装到像java.net.URL这样的类中。关于我对程序的分析,它是颠倒的 我还在类SplitResult和ParseResult中
urlparse
基本上具有我需要的功能,但它没有将其封装到像java.net.URL
这样的类中。关于我对程序的分析,它是颠倒的
我还在类SplitResult
和ParseResult
中查看了urlparse
的源代码。它们具有一些基本功能,可以用于子类化。但我必须将其余的urlparse函数重写为子类方法
我也发现了。这非常接近我真正想要的。只是对我来说这似乎太过分了
有人能建议另一种选择吗?我应该继续重新发明轮子吗
我的解决方案:
为了获得我的URL类,我基本上做了两件事:
urlparse.ResultMixin
李>
urlparse.urlparse()
并将结果转换为
URL实例的参数urlparse
将URL封装到一个名为ParseResult
的类中,因此可以将其视为这些URL的工厂函数。直接从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.PARSERESUL> <代码>)或创建适配器。
< P>您可能需要考虑查看,因为它可能是您需要的答案。 < P>我们有2018个:- ,
- ,
pathlib
,它由不可变的类组成。)
总的来说,拥有一种无痛的OO方式来解析和构造URL是很好的选择
更新
值得一看。为什么需要一个类呢?@Cat Plus:URL类非常方便。实际上非常方便,Python标准库包含了一个。@larsmans:实际上,它并不比命名元组多多少。@Cat Plus:您对URL类还有什么期望?;)我认为有一个URL类是一个好主意。URL是一个值对象,与其他对象非常相似。也许这比Python更像Java哲学,但是,例如,从一个字符串构造一个,然后获取scheme、host、path等是一个非常好的例子。看起来
urlparse
可以很好地完成这项工作,但不会破坏Java类的情况。谢谢。我真的很喜欢!我来试试;-)卷毛的缺点是它不能处理。但问题是谁需要来自维护者的params
@sumid说“如果它们的使用量增加,我很乐意添加它们(或接受拉取请求)。”如果你需要params,我相信你可以贡献它!:)ParseResult的名称为tuple。我不明白为什么。我想更改现有的url,但使用urllib没有明确的方法可以做到这一点。@n0nSmoker现在,将来我们在标准库中有不可变的pathlib
。尽管您可以轻松地生成新的路径
,但它会以某种方式进行更改。