json与base64与hashlib模块

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'

猜你喜欢

转载自blog.csdn.net/weixin_42089175/article/details/81459303
今日推荐