07-json与base64与hashlib模块

json hashlib base64 模块


json

JSON 的基本介绍

JSON全名是JavaScript Object Notation(即:JavaScript对象标记)
它是JavaScript的子集。
JSON是轻量级的文本数据交换格式
前端和后端进行数据交互,其实就是JS和Python进行数据交互


js对象
var teacher_1 = {
    name: ‘juhao’,
    age: 18,
    feature : [‘高’, ‘富’,  ‘帅’]
}


json字符串
{
    “name”: “juhao”,
    “age”: 18,
    “ feature “ : [‘高’, ‘富’,  ‘帅’]

}


python字典
{
    ‘name’: ‘juhao’,
    ‘age’: 18
    ‘feature’ : [‘高’, ‘富’,  ‘帅’]

}

json语法规则

数据在键值对中
数据由逗号分割
大括号保存对象
中括号保存数组

Python 编码为 JSON 类型转换对应表:

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

JSON 解码为 Python 类型转换对应表:

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

json模块 API

json.dumps()

对数据进行编码。Python 数据结构转换为JSON:

import json

# Python 字典类型转换为 JSON 对象
data = {
    'no' : 1,
    'name' : 'Runoob',
    'url' : 'http://www.runoob.com'
}

json_str = json.dumps(data)
print ("Python 原始数据:", repr(data))
print ("JSON 对象:", json_str)

执行以上代码输出结果为:

Python 原始数据: {'url': 'http://www.runoob.com', 'no': 1, 'name': 'Runoob'}
JSON 对象: {"url": "http://www.runoob.com", "no": 1, "name": "Runoob"}

有中文

import json
data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }

result = json.dumps(data,ensure_ascii=False)
print(result)
{"name": "juhao", "feature": ["高", "富", "帅"], "age": 18}

json.loads()

对数据进行解码。 将JSON编码的字符串转换为Python数据结构

import json

# Python 字典类型转换为 JSON 对象
data1 = {
    'no' : 1,
    'name' : 'Runoob',
    'url' : 'http://www.runoob.com'
}

json_str = json.dumps(data1)
print ("Python 原始数据:", repr(data1))
print ("JSON 对象:", json_str)

# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])

执行以上代码输出结果为:

Python 原始数据: {'name': 'Runoob', 'no': 1, 'url': 'http://www.runoob.com'}
JSON 对象: {"name": "Runoob", "no": 1, "url": "http://www.runoob.com"}
data2['name']:  Runoob
data2['url']:  http://www.runoob.com

如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据

json.dump()

data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }


# 写入 JSON 数据
with open('data.json', 'w') as f:
    json.dump(data, f)


json.dump(data,open('data.json','w'))
import json
data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }

file = open('data.json','w')
json.dump(data,file)

json.load()

data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }


# 写入 JSON 数据
with open('data.json', 'w') as f:
    json.dump(data, f)

# 读取数据
with open('data.json', 'r') as f:
    data = json.load(f)

data = json.load(open('data.json','r'))

content = json.load(open('two.json','r'))['feature'][2]
print(content)
import json
data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }

file = open('test1.json','w+')
json.dump(data,file)
file.seek(0)
result = json.load(file)
print(result['feature'][2])
import json
data = {
    'name': 'juhao',
    'age': 18,
    'feature' : ['高', '富',  '帅']
    }

json.dump(data,open('data.json','w'))
result = json.load(open('data.json','r'))
print(result['feature'][2])

repr() 函数将对象转化为供解释器读取的形式。

>>>s = 'RUNOOB'
>>> repr(s)
"'RUNOOB'"
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> repr(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"
>>>

hashlib模块

加密:md5, sha1, sha256, sha384, sha512

md5

import hashlib

mymd5 = hashlib.md5('hello'.encode('utf-8'))
print(mymd5.hexdigest())
5d41402abc4b2a76b9719d911017c592

sha1

mymd5 = hashlib.sha1('hello'.encode('utf-8'))
print(mymd5.hexdigest())
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

sha256

mymd5 = hashlib.sha256('hello'.encode('utf-8'))
print(mymd5.hexdigest())
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

sha384

mymd5 = hashlib.sha384('hello'.encode('utf-8'))
print(mymd5.hexdigest())
59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa90125a3c79f90397bdf5f6a13de828684f

sha512

mymd5 = hashlib.sha512('hello'.encode('utf-8'))
print(mymd5.hexdigest())
9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043

base64模块

base64模块常用API

base64.b64encode()

import base64
str1 = 'juhao'
str2 = base64.b64encode(str1.encode('utf-8'))
print(str2)
b'anVoYW8='

base64.b64decode()

import base64
str1 = 'juhao'
str2 = base64.b64encode(str1.encode('utf-8'))
print(str2)

str3 = base64.b64decode(str2)
print(str3)
b'anVoYW8='
b'juhao'

base64.urlsafe_b64encode()

import base64
url1 = "http://www.tanzhou.com/i+love_python"
url2 = base64.urlsafe_b64encode(url1.encode('utf-8'))
print(url1)
http://www.tanzhou.com/i+love_python

base64.urlsafe_b64decode()

import base64
url1 = "http://www.tanzhou.com/i+love_python"
url2 = base64.urlsafe_b64encode(url1.encode('utf-8'))
print(url1)

url3 = base64.urlsafe_b64decode(url2)
print(url3)
http://www.tanzhou.com/i+love_python
b'http://www.tanzhou.com/i+love_python'

猜你喜欢

转载自blog.csdn.net/qq_14993591/article/details/82459283
今日推荐