代理ip访问网站,局门户网站的建设,怎么做网站的后台维护,视觉设计原则urlencode与urldecode当url中包含中文或者参数包含中文#xff0c;需要对中文或者特殊字符(/、)做编码转换。urlencode的本质#xff1a;把字符串转为gbk编码#xff0c;再把\x替换成%。如果终端是utf8编码的#xff0c;需要把结果再转成utf8输出#xff0c;否则会乱…urlencode与urldecode当url中包含中文或者参数包含中文需要对中文或者特殊字符(/、)做编码转换。urlencode的本质把字符串转为gbk编码再把\x替换成%。如果终端是utf8编码的需要把结果再转成utf8输出否则会乱码。urlencodeurllib库里面的urlencode函数可以把key-value健值对的key、value都进行urlencode并转换成a1b2的字符串。#key-value健值对 from urllib import urlencode data{a:a1,b:中文} print urlencode(data)aa1b%E4%B8%AD%E6%96%87 data{a:a1,b测试:中文} print urlencode(data)aa1b%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87urllib库里面的quote函数可以针对单个字符串进行urlencode转换。#string from urllib import quote data测试 print quote(data)%E6%B5%8B%E8%AF%95urldecodeurllib只提供了unquote()函数。 from urllib import unquote unquote(%E6%B5%8B%E8%AF%95)\xe6\xb5\x8b\xe8\xaf\x95 print unquote(%E6%B5%8B%E8%AF%95)测试json处理两个函数函数描述json.dumps将python对象编码成JSON字符串(对象-字符串)json.loads将已经编码的json字符串解码为Python对象(字符串-对象)json.dumps语法json.dumps(data, sort_keysTrue, indent4,separators(self.item_separator, self.key_separator)) import json data{a:a1,b:b1} jsonstrjson.dumps(data) print jsonstr{a: a1, b: b1}#输出格式化 print json.dumps(data, sort_keysTrue, indent4,separators(,,:)){a:a1,b:b1}python原始类型向json类型的转换对照表PythonJSONdictobjectlisttuplearraystr,unicodestringint,long,floatnumberTruetrueFalsefalseNonenulljson.loadsjson.loads——返回Python字段的数据类型 import json jsonstr{a:a1,b:b1} print json.loads(jsonstr){ua: ua1, ub: ub1} jsonstr{a:a1,b:null,c:false,d:{aa:aa1,bb:bb1}} print json.loads(jsonstr){ua: ua1, uc: False, ub: None, ud: {uaa: uaa1, ubb: ubb1}} jsonstr[{a:a1},{b:b2}] print json.loads(jsonstr)[{ua: ua1}, {ub: ub2}]json类型转换为python类型的对照表JSONPythonobjectdictarrayliststringunicodenumber(int)int,longnumber(real)floattrueTruefalseFalsenullNone结论print只能输出python认识的数据类型python.dumps才可以格式化输出。计算字符串md5方法一使用md5包import md5def calMd5(signdata,signkey,joiner):signdatasigndatajoinersignkeymmd5.new(signdata)sign m.hexdigest()return sign方法二使用hashlib包import hashlibdef calHashMd5(signdata,signkey,joiner):signdatasigndatajoinersignkeymhashlib.md5(signdata)sign m.hexdigest()return sign计算hmacsha1hmac:密钥相关的哈希运算消息认证码hmac运算利用哈希算法(可以是MD5或者SHA-1)以一个密钥和一个消息为输入生成一个消息摘要作为输出。作用(1)验证接受的授权数据和认证数据(2)确认接受到的命令请求是已经授权的请求且传送过程没有被篡改import hmacimport base64def hmacSha1WithBase64(signdata,signkey):sign hmac.new(signkey, signdata,sha1).digest()sign base64.b64encode(sign)return sign字符串拼接from collections import OrderedDictdef composeStr(data,joiner,withkeyTrue,key_value_joiner):data OrderedDict(sorted(data.items(), keylambda t:t[0]))if withkey :signdata joiner.join([key_value_joiner.join((str(key), str(elem))) for key, elem in data.iteritems()])else :signdata joiner.join([elem for key, elem in data.items()])return signdata