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")
'\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_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

【python】python常用函数的更多相关文章

  1. Python 字符串常用函数

    操作字符串的常用函数 函数 描述(返回值) str.capitalize() 将字符串的第一个字符大写 str.title() 返回标题化的字符串,即每个单词的首字母都大写 str.upper() 全 ...

  2. Python—字符串常用函数

    Python-字符串常用字符串 字符串是一种表示文本的数据类型,使用单引号和双引号及三引号表示 访问字符串中的值字符串的每个字符都对应一个下标,下标编号是从0开始 转义字符字符串的格式化输出切片常用函 ...

  3. python字符串 常用函数 格式化字符串 字符串替换 制表符 换行符 删除空白 国际货币格式

    # 字符串常用函数# 转大写print('bmw'.upper()) # BMW# 转小写print('BMW'.lower()) # bmw# 首字母大写print('how aae you ?'. ...

  4. python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object): ""&q ...

  5. Python量化常用函数

    # -*- coding: utf-8 -*- # @Author: fangbei # @Date: 2017-08-26 # @Original: price_str = '30.14, 29.5 ...

  6. 转 python 的常用函数replace, split(),enumerate() 函数

    1.execmd = "su - " + ou + " -c 'sqlplus / as sysdba << EOF\n " + execmd3 + ...

  7. python—各种常用函数及库

    列表list1.append(x)         将x添加到列表末尾 list1.sort()                对列表元素排序 list1.reverse()            将 ...

  8. Python string常用函数

    2017-07-03 23:26:08 1..replace(self, old, new, count=-1) replace()函数将旧字符串替换为新字符串,最后一个参数count为可选项,表示替 ...

  9. selenium2.0关于python的常用函数

    转: 新建实例driver = webdriver.Chrome() 1.获取当前页面的Url函数 方法:current_url 实例: driver.current_url 2.获取元素坐标 方法: ...

  10. python字符串常用函数

    # 索引与切片  *** capitalize()  **首字母大写 upper() lower() *** 大写和小写函数 startswith endswith  ***    判断以‘’字母’开 ...

随机推荐

  1. 把 Elasticsearch 当数据库使:聚合后排序

    使用 https://github.com/taowen/es-monitor 可以用 SQL 进行 elasticsearch 的查询.有的时候分桶聚合之后会产生很多的桶,我们只对其中部分的桶关心. ...

  2. 拥抱了IDEA却发现再也回不去Eclipse...

    一.背景 还记得去年入职的时候,发现很多同事都在用Intellij IDEA,其实在那之前都已经接触过,只不过没有在开发中实际应用而已. 这时候我下定决心要拥抱IDEA了,尤其被它酷酷的黑色主题所吸引 ...

  3. PyCharm引入python需要使用的包

    在学习python的时候,被推荐了使用PyCharm这款IDE,但是在import包的时候却发生了问题- -无法找到相应的包,但是明明通过pip安装成功了 在这款IDE中,要导入包,需要手动进行引入 ...

  4. 用Javascript开发网页截屏插件

    实现思路用html2canvas.js将元素转换成canvas,在将canvas转成图片. html2canvas(document.body, { onrendered: function(canv ...

  5. C/C++求职宝典21个重点笔记(常考笔试面试点)

    这是我之前准备找工作时看<C/C++求职宝典>一书做的笔记,都是一些笔试面试中常考的重点难点问题,但比较基础,适合初学者看. 1. char c = '\72'; 中的\72代表一个字符, ...

  6. CentOS QT can't find lGL

    直接安装: yum install libGL, yum install libGL-devel 库即可.

  7. 文档对象模型DOM(一)

    当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 每加载一个标记 注释 或者属性,就将其当 ...

  8. CRM项目分析建表

    这个CRM项目是我们学习一年多以来,第一次团队合作完成的项目!之前的项目都是做半个月的,但是都是自己单独完成一套项目的!这次我们还是做半个月的!但是我们是分工合作的!自己所完成的内容都是不同的!我觉得 ...

  9. 常见的加密解密算法-MD5

    一.MD5加密概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 13 ...

  10. .netcore入门

    开发环境:windows    编辑器: Visual Studio Code 环境安装: .Net Core 1.1 SDK     https://www.microsoft.com/net/co ...