python的quote
『壹』 python中quote函數是什麼意思,怎麼用
quote函數一般用於處理URL鏈接里的特殊字元,比如一些非ASCII列表中的字母。
位置:該函數在Python27中位於urllib模塊下,在Python3中應該是向下移動一級目錄,位於urllib.parse模塊中。
功能:替換字元串string中的一些特殊字元,並使用%xx的方式替換該特殊字元(xx為該字元的(uft-8)十六進制數值)。正常字元ascii字母a-z,數字,還有符號'_.-'是不會被替換的。當然使用函數的第二個參數(默認值為/)可以指定哪些字元也不需要替換。
例子:
>>>urllib.quote('/test')
'/test'
>>>urllib.quote('/test',safe='')
'%2Ftest'#2F為/的uft-8的hex值。
其他:函數的第一個參數為需要轉換的字元串,格式應該為str或者bytes。
函數的第三個字元為編碼方式。
『貳』 url編碼問題在python中怎麼解決
最近在抓取一些js代碼產生的動態數據,需要模擬js請求獲得所需用的數據,遇到對url進行編碼和解碼的問題,就把遇到的問題總結一下,有總結才有進步,才能使學到的知識更加清晰。對url進行編碼和解碼,python提供了很方便的介面進行調用。
url中的query帶有特殊字元(不是url的保留字)時需要進行編碼。當url中帶有漢字時,需要特殊的處理才能正確編碼,以下都只針對這種情形,當然也適用於純英文字元的url。
(1) url編碼:
import urllib
url = 'wd=哈哈' #如果此網站編碼是gbk的話,需要進行解碼,從gbk解碼成unicode,再從Unicode編碼編碼為utf-8格式。
url = url.decode('gbk', 'replace')
print urllib.quote(url.encode('utf-8', 'replace'))
結果: 3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88
(2) url解碼:
import urllib
encoded_url = est.com%2fs%3fwd%3d%e5%93%88%e5%93%88'
print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace') #反過來
函數調用的參數以及結果都是utf-8編碼的,所以在對url編碼時,需要將參數串的編碼從原始編碼轉換成utf-8,
對url解碼時,需要將解碼結果從utf-8轉換成原始編碼格式。
依據網站採用的編碼不同,或是gbk或是utf-8,賦賦予不同的編碼,進行不同的url轉碼。GBK格式,一個中文字元轉為%xx%xx,共兩組;utf-8格式,一個中文字元轉為%xx%xx%xx,共三組。
>>>importsys,urllib
>>>s='杭州'
>>>urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))
%BA%BC%D6%DD
>>>urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))
'%E6%9D%AD%E5%B7%9E'
a="墨西哥女孩被拐4年接客4萬次生的孩子成為人質-搜狐新聞"
printurllib.quote(urllib.quote(a))
[python]view plain
進行兩次編碼轉換後,會變為:%25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9.................................................................................這樣的形式。
同樣需要兩次解碼後才能得到中文。
最近用python寫了個小爬蟲自動下點東西,但是url 是含中文的,而且中文似乎是 gbk 編碼然後轉成 url的。舉個例子吧,我如果有個unicode字元串「歷史上那些牛人們.pdf」,那麼我轉換成url之後是,
t="%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E9%82%A3%E4%BA%9B%E7%89%9B%E4%BA%BA%E4%BB%AC.pdf",
但是對方網站給的是 s="%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF"
>>>print urllib.unquote("%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF").decode('gbk').encode('utf-8')
>>>歷史上那些牛人們.PDF
『叄』 Python字元串是什麼,如何使用
字元串的表示
字元串可以被成對的單引號(single quote)或雙引號(double quotes)包圍起來,這兩者的作用是一樣的:
更多關於Python的基礎性知識可以看下這個網頁的視頻教程,Python常見的數據類型及使用方法掌握,希望我的回答能幫到你。