1

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

问题:

我有一个正在下载 url 资源的 python turbogears 应用程序。客户端正在为其提供一个 URL 以供下载。

特别是一位客户发送未转义的网址。例如,' http://www.foo.com/file with space.txt'

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

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

所以,总结是:如何在 python 中对整个完全限定的 url 进行转义?

注意:我尝试使用 urlparse 解析出 url 组件以获取路径。然而,有时 url 会有查询参数、片段等。所以,我不想编写将 url 拆分成各个部分的代码,只从路径 + 查询 + 片段中转义所需的任何内容,然后重新构建 url。

是否有任何帮助函数直接获取 url 并将其转义?

另外,请注意,有时我会从客户那里获得有效的转义网址。所以,我也想处理它们,而不是双重逃避它们。

4

2 回答 2

2

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

https://github.com/seomoz/url-py/

这是来自 seomoz 的 url 鸡蛋。似乎很好地完成了这项工作。

于 2013-07-16T18:48:54.580 回答
1

您可以使用正则表达式将域名和文件路径分开,然后只对路径进行urlencode。这是正则表达式文档这是一个教程

于 2013-07-16T16:26:03.400 回答