2016-02-02 205 views

回答

6

我認爲你正在尋找urllib.pathname2url。比較:

Python 3中,urllib.parse.quote

>>> urllib.parse.quote('abc def/foo?bar=baz') 
'abc%20def/foo%3Fbar%3Dbaz' 

Python 2中,urllib.pathname2url

>>> urllib.pathname2url('abc def/foo?bar=baz') 
'abc%20def/foo%3Fbar%3Dbaz' 

的行爲似乎與我相似,但他們可能會略有不同。

編輯:

上Algina的帖子閱讀您的意見,我覺得這是我建立的網址首選方式:

>>> url = 'http://dev.echonest.com/api/v4/song/search' 
>>> params = {'api_key': 'xxxx', 'format': 'json', 'artist': 'Galaxie 500'} 
>>> "{}?{}".format(url, urllib.urlencode(params)) 
'http://dev.echonest.com/api/v4/song/search?api_key=xxxx&artist=Galaxie+500&format=json' 
+0

謝謝,我會盡力 – timothylhuillier

0

你能更具體嗎? 你有 urllib.parse.quote_plus(...) urllib.parse.quote_from_bytes(...) urllib.parse.unquote(...) 像你提到的

見文件瀏覽: https://docs.python.org/3.2/library/urllib.parse.html

+0

謝謝, 我'REQ = 'http://dev.echonest.com/api/v4/song/search?api_key=xxxx&format=json&artist=' + urllib.parse.quote(藝術家)' 和'artist =「Oasis」' – timothylhuillier

3

實際使用圖書館six,這是爲python2製作/ python3兼容性,你可以做

import six.moves.urllib as urllib 

# and now you can use urllib as it was python3 
urllib.quote(...) 

,如果你只是想python2,它實際上是urllib.quote迪rectly

+0

謝謝你的提示! –

+0

嗨@ allan.simon,我已經安裝了'six(1.10.0)'軟件包,並且我得到了'AttributeError:'Module_six_moves_urllib'對象沒有屬性'quote'' ..任何想法爲什麼? –

+0

似乎我需要'urllib.parse.quote(...)'(實際上我需要'urllib.parse.quote_plus(...)')。 –