07-json與base64與hashlib模組
阿新 • • 發佈:2018-12-09
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'