我做了很多搜索和实验,我还没有找到解决方案。所以,如果我错过了一些琐碎的事情,我会提前道歉。
问题:
我有一个正在下载 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 并将其转义?
另外,请注意,有时我会从客户那里获得有效的转义网址。所以,我也想处理它们,而不是双重逃避它们。