Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中是否有URL的预定义类?_Python_Url_Urlparse - Fatal编程技术网

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

Python中是否有URL的预定义类?,python,url,urlparse,Python,Url,Urlparse,我正在寻找类似python模块、Django、Zope或python中任何地方的东西。 我希望它最好是从语义原因,因为对相关程序的分析结果表明URL在其中起着至关重要的作用。其结果是,这样的URL类在该程序中也将有很大的实际用途 当然,我可以自己写这样的课程,但在我开始重新发明轮子之前,我想四处看看 我确实看了看。urlparse基本上具有我需要的功能,但它没有将其封装到像java.net.URL这样的类中。关于我对程序的分析,它是颠倒的 我还在类SplitResult和ParseResult中

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

当然,我可以自己写这样的课程,但在我开始重新发明轮子之前,我想四处看看

我确实看了看。
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个:

    • ,
    • ,
    现在只维护furl,但它的主要缺点是它是可变的,这当然不鼓励最佳实践。(有一个很好的现代参考-
    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
    。尽管您可以轻松地生成新的
    路径
    ,但它会以某种方式进行更改。