python中的URL编码/解码(整个URL,而不仅仅是路径)

python中的URL编码/解码(整个URL,而不仅仅是路径),python,url,urlencode,urllib,Python,Url,Urlencode,Urllib,我做了大量的搜索和实验,但一直没有找到解决方案。所以,如果我错过了一些琐碎的事情,我会提前道歉 问题: 我有一个python turbogears应用程序正在下载url资源。客户端会给它一个URL供下载 特别是一个客户机发送未扫描的URL。例如,“with space.txt” 当我尝试下载它时,下载失败,因为服务器无法识别此url。它需要转义空格才能成为有效的url 我知道有一些方法(urllib.urlencode/urllib.quote等)可以对字符串进行编码。但是,他们假设他们处理的字

我做了大量的搜索和实验,但一直没有找到解决方案。所以,如果我错过了一些琐碎的事情,我会提前道歉

问题:

我有一个python turbogears应用程序正在下载url资源。客户端会给它一个URL供下载

特别是一个客户机发送未扫描的URL。例如,“with space.txt”

当我尝试下载它时,下载失败,因为服务器无法识别此url。它需要转义空格才能成为有效的url

我知道有一些方法(urllib.urlencode/urllib.quote等)可以对字符串进行编码。但是,他们假设他们处理的字符串不是URL。如果为这些方法提供一个URL,它们将逃逸URL的方案,并使其更加无效

因此,总结是:如何在python中取消显示整个完全限定的url

注意:我已经尝试使用urlparse来解析url组件以获取路径。但是,有时url会有查询参数、片段等。因此,我不想编写代码,将url拆分为各个部分,仅从路径+查询+片段中转义所需内容,然后重建url

有没有直接获取url并转义它的帮助函数


另外,请注意,有时我会从客户端获得有效的转义URL。因此,我也要处理它们,而不需要双重转义。

您可以使用正则表达式来分隔域名和文件路径,然后只对路径进行URL编码

好的,我在pypi上发现了以下内容。这似乎解决了问题


这是seomoz的url。看来这项工作做得很好

谢谢你的回复。正如我上面所说的,我不喜欢这样做。如果我想这样做,我最好使用urlparse解析出组件,进行更改,然后重新组合它们。但是这样很容易出错。对不起,我完全错过了那部分。