2013-07-16 59 views
0

我已经做了大量的搜索和实验,并且我还没有找到解决方案。所以,如果我错过了一些微不足道的东西,我会提前道歉。在Python中进行URL编码/解码(整个网址,不仅仅是路径)

问题:

我有一个python的TurboGears应用程序正在下载的URL资源。它正在被一个URL下载给客户。

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

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

我知道有方法(urllib.urlencode/urllib.quote等)将编码字符串。但是他们认为他们工作的字符串不是网址。如果您为这些方法提供了一个URL,他们就会逃避url的方案,并使其更加无效。

所以,总结是:如何在python中使用完整的合法url?

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

是否有任何帮助函数,直接采取该网址,并逃脱它?

此外,请注意,有时我会从客户端获得有效的转义URL。所以,我想要处理它们,而不是双重逃脱它们。

回答

1

您可以使用正则表达式分隔域名和文件路径,然后只对路径进行urlencode编码。 Here's the regex documentationhere's a tutorial

+0

感谢您的回复。正如我上面所说,我宁愿不要这样做。如果我想这样做,我不妨使用urlparse解析出组件,进行更改并将它们组合起来。但那么它很容易出错。 – feroze

+0

对不起,我完全错过了那部分。 – Chris

相关问题