2013-07-16 33 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

相關問題