1.json模块
JSON是轻量级的文本数据交换格式,是前端与后台数据交互的格式,也就是JS和Python数据交互的格式。
js | json | python |
var teacher_1 = { name: 'sakura', age: 18, feature : ['高' ,'富', '帅'] } |
{ "name": "sakura", "age": 18, "feature" : ['高' ,'富', '帅'] } |
{ 'name': 'sakura', 'age': 18, 'feature' : ['高' ,'富', '帅'] } |
json语法规则
- 数据在键/值对中
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
- 名称必须用双引号(即:" ")来包括
- 值可以是双引号包括的字符串、数字、true、false、null、数组,或对象。
数据交互一般是前端的js代码转换为json传给后台,后台json代码解析为python用于数据处理或者转化为js前端显示
如有道翻译响应的后台数据为
{"translateResult":[[{"tgt":"你好","src":"hello"}]],
"errorCode":0,
"type":"en2zh-CHS",
"smartResult":{
"entries":["","n. 表示问候, 惊奇或唤起注意时的用语\r\n","int. 喂;哈罗\r\n","n. (Hello)人名;(法)埃洛\r\n"],"type":1}
}
python | json |
字典 | 对象 |
列表或元组 | 数组 |
字符串 | 字符串 |
int或float | 数字 |
True或False | true或flase |
None | null |
json的接口函数
json.dumps(obj, [indent=True, sort_key=True]) # 将obj对象,变成JSON字符串
indent实现缩进,sort_key实现排序
json.loads(s) #将这个JSON字符串,转换成Python的数据类型
json.dump(obj, open('data.json' , ' w ')) #将obj对象编程json数据存入文件
data = dump.load(open('data.json', 'r')) #将json文件解析成python数据
import json
data = {
'name':'sakura',
'age':18,
'feature':['高','富','帅']
}
res = json.dumps(data)
print(res)
print('='*30)
res = json.dumps(data,indent=True,sort_keys=True)
print(res)
ans = json.loads(res)
print('='*30)
print(ans)
{"name": "sakura", "age": 18, "feature": ["\u9ad8", "\u5bcc", "\u5e05"]}
==============================
{
"age": 18,
"feature": [
"\u9ad8",
"\u5bcc",
"\u5e05"
],
"name": "sakura"
}
==============================
{'age': 18, 'feature': ['高', '富', '帅'], 'name': 'sakura'}
2.hashlib模块
hash本身是一个函数,可以把任意长度的数据转换为,一个长度固定的数据串, 一般用于数据查找和信息安全的加密算法.
只能加密,无法解密
hash算法特点
- 正向快速:给定明文和hash函数,可以在有限时间有限资源内计算出hash值
- 逆向困难:给定hash值,几乎不可能逆推出明文
- 输入敏感:明文更改一点,生成的hash值相差极大
- 冲突避免:很难找到内容不同的两段明文,是他们的hash值相同
常用函数
md5, sha1, sha256, sha384, sha512
加密:data = hashlib.md5(str.encode('utf8')) #一定要指定编码方式,其他方法类似
暗文:data.hexdigest()
import hashlib
data1 = hashlib.md5('sakura'.encode('utf8'))
data2 = hashlib.md5('sakure'.encode('utf8'))
data3 = hashlib.md5('spopdgrgr];lsdpaojfds'.encode('utf8'))
print(data1.hexdigest())
print(data2.hexdigest())
print(data3.hexdigest())
149afd631693c895f81e508eb5aaef37
c2152c648e9652aca9237111591c7223
773c60d8ccaa623d13086bc4ce66ad88
3.base64模块
是一个编码模块,可以解码,非加密
接口函数(一定要指定编码方式)
base64.b64encode() 对字符串编码解码
base64.b64decode()
base64.urlsafe_b64encode() 对url字符串编码解码
base64.urlsafe_b64decode()
import base64
str='sakura'
url = 'www.baidu.com'
data = base64.b64encode(str.encode('utf8'))
data2 = base64.urlsafe_b64encode(url.encode('utf8'))
print(data)
print(data2)
ans = base64.b64decode(data)
ans2 = base64.urlsafe_b64decode(data2)
print(ans)
print(ans2)
b'c2FrdXJh'
b'd3d3LmJhaWR1LmNvbQ=='
b'sakura'
b'www.baidu.com'