我做了很多搜索和实验,但我找不到解决方案。所以,如果我错过了一些微不足道的事情,我会提前道歉。
问题:
我有一个正在下载网址资源的python turbogears应用。它被提供了一个供客户下载的URL。
一个客户特别发送未转义的网址。例如,'http://www.foo.com/file with space.txt'
当我尝试下载时,下载失败,因为服务器无法识别此URL。它需要将空格转义为有效的URL。
我知道有编码字符串的方法(urllib.urlencode / urllib.quote等)。但是他们认为他们使用的字符串不是网址。如果你给这些方法提供一个URL,它们就会逃脱url的方案,并使其更加无效。
所以,总结是:我如何在python中覆盖整个完全限定的URL?
注意:我尝试使用urlparse解析url组件以获取路径。但是,有时url会有查询参数,片段等。所以,我不想编写将url拆分为其部分的代码,只从path + query + fragment中转义所需的内容,然后重新构建url。
是否有任何辅助函数直接获取url并将其转义?
另请注意,有时我会从客户端获取有效的转义网址。所以,我也想处理它们,而不是双重逃避它们。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以使用正则表达式来分隔域名和文件路径,然后只对路径进行urlencode。 Here's the regex documentation,here's a tutorial。