1. 程式人生 > >07-json與base64與hashlib模組

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'