• 【python】python常用函数


    urlencode与urldecode


    当url中包含中文或者参数包含中文,需要对中文或者特殊字符(/、&)做编码转换。
    urlencode的本质:把字符串转为gbk编码,再把x替换成%。如果终端是utf8编码的,需要把结果再转成utf8输出,否则会乱码。

    urlencode

    urllib库里面的urlencode函数,可以把key-value健值对的key、value都进行urlencode并转换成a=1&b=2的字符串。

    #key-value健值对
    >>> from urllib import urlencode
    >>> data={'a':'a1','b':'中文'}
    >>> print urlencode(data)
    a=a1&b=%E4%B8%AD%E6%96%87
    >>> data={'a':'a1','b测试':'中文'}
    >>> print urlencode(data)
    a=a1&b%E6%B5%8B%E8%AF%95=%E4%B8%AD%E6%96%87
    

    urllib库里面的quote函数,可以针对单个字符串进行urlencode转换。

    #string
    >>> from urllib import quote
    >>> data="测试"
    >>> print quote(data)
    %E6%B5%8B%E8%AF%95
    

    urldecode

    urllib只提供了unquote()函数。

    >>> from urllib import unquote
    >>> unquote("%E6%B5%8B%E8%AF%95")
    'xe6xb5x8bxe8xafx95'
    >>> print unquote("%E6%B5%8B%E8%AF%95")
    测试
    >>>
    

    json处理


    两个函数:

    函数 描述
    json.dumps 将python对象编码成JSON字符串(对象->字符串)
    json.loads 将已经编码的json字符串解码为Python对象(字符串->对象)

    json.dumps

    语法:json.dumps(data, sort_keys=True, indent=4,separators=(self.item_separator, self.key_separator))

    >>> import json
    >>> data={"a":"a1","b":"b1"}
    >>> jsonstr=json.dumps(data)
    >>> print jsonstr
    {"a": "a1", "b": "b1"}
    #输出格式化
    >>> print json.dumps(data, sort_keys=True, indent=4,separators=(",",":"))
    {
        "a":"a1",
        "b":"b1"
    }
    >>>
    

    python原始类型向json类型的转换对照表:

    Python JSON
    dict object
    list,tuple array
    str,unicode string
    int,long,float number
    True true
    False false
    None null

    json.loads

    json.loads——返回Python字段的数据类型

    >>> import json
    >>> jsonstr='{"a":"a1","b":"b1"}'
    >>> print json.loads(jsonstr)
    {u'a': u'a1', u'b': u'b1'}
    >>> jsonstr='{"a":"a1","b":null,"c":false,"d":{"aa":"aa1","bb":"bb1"}}'
    >>> print json.loads(jsonstr)
    {u'a': u'a1', u'c': False, u'b': None, u'd': {u'aa': u'aa1', u'bb': u'bb1'}}
    >>> jsonstr='[{"a":"a1"},{"b":"b2"}]'
    >>> print json.loads(jsonstr)
    [{u'a': u'a1'}, {u'b': u'b2'}]
    

    json类型转换为python类型的对照表

    JSON Python
    object dict
    array list
    string unicode
    number(int) int,long
    number(real) float
    true True
    false False
    null None

    结论:print只能输出python认识的数据类型,python.dumps才可以格式化输出。

    计算字符串md5


    方法一:使用md5包

    import md5
    def calMd5(signdata,signkey,joiner=""):
    	signdata=signdata+joiner+""+signkey
    	m=md5.new(signdata)
    	sign = m.hexdigest()
    	return sign
    

    方法二:使用hashlib包

    import hashlib
    def calHashMd5(signdata,signkey,joiner=""):
    	signdata=signdata+joiner+""+signkey
    	m=hashlib.md5(signdata)
    	sign = m.hexdigest()
    	return sign
    

    计算hmacsha1


    hmac:密钥相关的哈希运算消息认证码,hmac运算利用哈希算法(可以是MD5或者SHA-1),以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

    作用:
    (1)验证接受的授权数据和认证数据;
    (2)确认接受到的命令请求是已经授权的请求且传送过程没有被篡改

    import hmac
    import base64
    def hmacSha1WithBase64(signdata,signkey):
    	sign = hmac.new(signkey, signdata,sha1).digest()
    	sign = base64.b64encode(sign)
    	return sign
    

    字符串拼接


    from collections import OrderedDict
    
    def composeStr(data,joiner,withkey=True,key_value_joiner="="):
    	data = OrderedDict(sorted(data.items(), key=lambda 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
    
  • 相关阅读:
    关于winform动态创建button等控件以及规定行列
    Winform调用系统计算器、记事本
    悲催的一晚
    C#winform从数据集导出Excel(带指定Excel样式) 转+修改
    C#一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第100位数是多少, 用递归算法实现。
    C#任意输入一个数,判断这个数是否跟数组里的数相等
    构建一个web应用系统应该分为哪几个步骤
    ios XMPP GCDAsynSocket线程溢出挂掉程序
    Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“apsenvironment”的权利字符串" UserInfo=0x22f6a0 {NSLocalizedDescription=未找到应用程序的“apsenvironment”的权利字符串
    ios推送php服务器端pem文件
  • 原文地址:https://www.cnblogs.com/amyzhu/p/9102751.html
Copyright © 2020-2023  润新知