測試環境為 CentOS 8 x86_64 (虛擬機)
Python 的資料格式是沒有 JSON (JavaScript Object Notation , 輕量級資料交換語言), JSON 格式如下:
{ "CPU" :"Intel", "MEM":["Hynix 16G","Hynix 16G"] , "Disk":"Samsung" }
這格式跟 Python 的 dict ( dictionary )資料型態物件類似,資料一樣由 key (鍵值,可使用 括字串(str),整數(int)與浮點數(float) ) + Value (值,可以為任何東西),定義使用大括號{} 來表示為 dic ,格式為 key:valu ( pair 組成 並由逗點隔開) 如下.
Computer1={"CPU":"Intel" , "MEM":["Hynix 16G","Hynix 16G"] , "Disk":"Samsung"}
[root@localhost ~]# python3 Python 3.6.8 (default, Mar 25 2022, 11:15:52) [GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux Type "help", "copyright", "credits" or "license" for more information.
從網路上抓資料的傳輸格式大部分是使用 JSON 格式,對 Python 而言就是字串 String ,我們可透過 json 套件將資料從 Json(str) <-> dict 做轉換.
- json.dumps()
將 python 物件轉換為 Json 字串(string)
dict -> json(string)>>> import json >>> dict1={"CPU":"Intel" , "MEM":["Hynix 16G","Hynix 16G"] , "Disk":"Samsung"} >>> type(dict1) <class 'dict'>
>>> json1=json.dumps(dict1) >>> json1 '{"CPU": "Intel", "MEM": ["Hynix 16G", "Hynix 16G"], "Disk": "Samsung"}' >>> type(json1) <class 'str'>
使用參數 indent 會更容易閱讀(會加上換行字元 \n 與 數字代表縮排格數),下面來看差別.
- indent=0
>>> print(json.dumps(dict1 , indent=0)) { "CPU": "Intel", "MEM": [ "Hynix 16G", "Hynix 16G" ], "Disk": "Samsung" }
- indent=1
>>> print(json.dumps(dict1 , indent=1)) { "CPU": "Intel", "MEM": [ "Hynix 16G", "Hynix 16G" ], "Disk": "Samsung" }
- indent=4
>>> print(json.dumps(dict1 , indent=4)) { "CPU": "Intel", "MEM": [ "Hynix 16G", "Hynix 16G" ], "Disk": "Samsung" }
list -> json(string)
>>> list1=[1 , 2, "str1"] >>> type(list1) <class 'list'>
list 會被轉成 Json 的陣列.
>>> json2=json.dumps(list1) >>> json2 '[1, 2, "str1"]' >>> type(json2) <class 'str'>
- indent=0
- json.loads()
將 json 字串 (string) 轉換為 python 物件>>> str1='{"CPU":"Intel" , "MEM":["Hynix 16G","Hynix 16G"] , "Disk":"Samsung"}' >>> type(str1) <class 'str'>
>>> dict2=json.loads(str1) >>> dict2 {'CPU': 'Intel', 'MEM': ['Hynix 16G', 'Hynix 16G'], 'Disk': 'Samsung'} >>> type(dict2) <class 'dict'>
沒有解決問題,試試搜尋本站其他內容