Python中dumps, loads dump, load用法詳解

FeelTouch發表於2018-10-22

json 模組提供了一種很簡單的方式來編碼和解碼JSON資料。 其中兩個主要的函式是 json.dumps() 和 json.loads()

 json.dumps()將一個Python資料結構轉換為json

import json

data = {
    'name' : 'ACME',
    'shares' : 100,
    'price' : 542.23
}

json_str = json.dumps(data)

json.loads()將一個JSON編碼的字串轉換回一個Python資料結構

data = json.loads(json_str)

json.dump()將資料寫成json檔案

# Writing JSON data
with open('data.json', 'w') as f:
    json.dump(data, f)

json.load()讀取json格式檔案

# Reading data back
with open('data.json', 'r') as f:
    data = json.load(f)

對比

#json.load()是用來讀取檔案的,即,將檔案開啟然後就可以直接讀取。
with open("檔名") as f:
     print(type(f))  # <class '_io.TextIOWrapper'>  也就是文字IO型別
     result=json.load(f)

#json.loads()是用來讀取字串的,即,可以把檔案開啟,用readline()讀取一行,然後json.loads()一行
with open("檔名") as f:
    line=f.readline():  
    print(type(line))  # <class 'str'>
    result=json.loads(line)

實戰

def load_json(path):   
    lines = []     #  第一步:定義一個列表, 開啟檔案
    with open(path) as f:  
        for row in f.readlines(): # 第二步:讀取檔案內容 
            if row.strip().startswith("//"):   # 第三步:對每一行進行過濾 
                continue
            lines.append(row)                   # 第四步:將過濾後的行新增到列表中.
    return json.loads("\n".join(lines))       #將列表中的每個字串用某一個符號拼接為一整個字串,用json.loads()函

參考:Python Cookbook 3rd Edition

相關文章