urllib模塊中parse函數中的urlencode和quote_plus方法
阿新 • • 發佈:2018-02-12
生成 變化 嘗試 appid 微信 notify 固定 param reat
本來只是向看一下quote_plus的作用,然後發現urlencode方法也是很方便的一個組合字符串的方法首先是介紹一下urlencode,他是將一些傳入的元素使用&串聯起來,效果如下:
>>>params = { "appid": 1, "mch_id": 1, "body": 1, "out_trade_no": 1, "total_fee": 1, "spbill_create_ip": 1,"notify_url": 1, "trade_type": 1, "nonce_str": 1 } >>>parse.urlencode(params) ‘appid=1&mch_id=1&body=1&out_trade_no=1&total_fee=1&spbill_create_ip=1¬ify_url=1&trade_type=1&nonce_str=1‘
如果加以改造,就可以直接應到生成微信支付的拼接字符串當中了:
>>>parse.urlencode([(k, params[k]) fork in sorted(params)]) ‘appid=1&body=1&mch_id=1&nonce_str=1¬ify_url=1&out_trade_no=1&spbill_create_ip=1&total_fee=1&trade_type=1‘ >>>[(k, params[k]) for k in sorted(params)] [(‘appid‘, 1), (‘body‘, 1), (‘mch_id‘, 1), (‘nonce_str‘, 1), (‘notify_url‘, 1), (‘out_trade_no‘, 1), (‘spbill_create_ip‘, 1), (‘total_fee‘, 1), (‘trade_type‘, 1)]
然後就是quote_plus了,使用了一下發現這個方法是將一些特殊的字符串轉換為固定的一些符號字母數字組合,例如:
>>>parse.quote_plus(‘a&b/c‘) ‘a%26b%2Fc‘
其中的&和/都分別變為了%26b和%2F,還有更多的一些符號變化就先不去一一嘗試了。
urllib模塊中parse函數中的urlencode和quote_plus方法