一、Python寫入JSON文件
JSON(JavaScript Object Notation)是一種輕量級的數據格式,廣泛應用於前後端數據交互和數據存儲。Python可以通過內置的json庫,將Python對象序列化為JSON格式,便於數據傳輸和存儲。下面是一個簡單的示例,將Python列表數據寫入JSON文件
import json data = {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'sports']} with open('data.json', 'w') as f: json.dump(data, f)
使用json.dump()函數將Python字典對象data寫入文件data.json中。如果文件不存在,則會自動創建;如果文件中已有數據,會被新的數據覆蓋。如果要追加數據而非覆蓋,可以使用json.dump()函數的append參數。
二、Python寫入JSON文件怎麼換行
JSON文件通常是單行存儲,即所有的數據都在一行中,不方便查看和編輯。我們可以通過使用json.dump()函數的indent參數控制換行和縮進。以下是示例代碼:
data = {'name': 'Bob', 'age': 20, 'hobbies': ['music', 'travel']} with open('data.json', 'w') as f: json.dump(data, f, indent=2)
indent參數指定縮進的空格數,本例中設置為2。執行後,數據將以帶縮進的多行格式存儲在data.json文件中。
三、Python寫入JSON不追加
在Python寫入JSON文件時,如果文件中已經存在數據,新的數據默認會覆蓋舊的數據。如果需要在文件末尾追加新數據而非覆蓋舊數據,可以使用json.dump()函數的append參數。以下是示例代碼:
data = {'name': 'Clare', 'age': 22, 'hobbies': ['cooking', 'photography']} with open('data.json', 'a') as f: json.dump(data, f, indent=2)
注意,這裡的寫入模式使用的是”a”而非”w”,表示以追加模式打開文件。另外,JSON文件的格式仍然是單行存儲,只是被多次寫入(追加)。
四、Python寫入JSON文件亂碼
有時在寫入JSON文件時,可能會遇到中文亂碼的問題。這是因為在默認情況下,Python使用ASCII編碼將字符串轉化為JSON格式,如果字符串包含中文等非ASCII字符,就會出現亂碼。可以使用json.dump()函數的ensure_ascii參數控制編碼方式。以下是示例代碼:
data = {'name': '張三', 'age': 24, 'hobbies': ['coding', 'guitar']} with open('data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)
在打開文件時,需要指定編碼方式為utf-8。設置ensure_ascii參數為False後,Python會使用utf-8編碼將字符串轉化為JSON格式,避免中文亂碼。
五、Python寫入JSON沒有文件
在寫入JSON文件時,如果文件不存在,Python會自動創建。但如果文件所在的目錄不存在,會出現異常信息。可以使用os庫的makedirs函數創建目錄。以下是示例代碼:
import os if not os.path.exists('data'): os.makedirs('data') data = {'name': '李四', 'age': 26, 'hobbies': ['movie', 'fashion']} with open('data/data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)
在本例中,如果data文件夾不存在,會先使用os.makedirs()函數創建data文件夾。然後使用open()函數打開data.json文件並寫入數據。
六、Python寫入JSON文件不識別中文
在Python寫入JSON文件時,如果字符串中包含中文,可能會出現編碼不正確的問題。這是因為JSON規範中,只支持Unicode編碼,不支持其他編碼。可以使用Python的unicode()函數將字符串轉化為Unicode編碼。以下是示例代碼:
data = {'name': unicode('王五', 'utf-8'), 'age': 28, 'hobbies': ['basketball', 'fitness']} with open('data.json', 'w') as f: json.dump(data, f, ensure_ascii=False, indent=2)
在本例中,使用unicode()函數將字符串’王五’轉化為Unicode編碼,避免編碼不正確的問題。
七、Python寫入JSON數組並解析
在實際工作中,經常會遇到需要將多個數據以數組(列表)的形式寫入JSON文件,或者從JSON文件讀取數組數據並進行解析的情況。以下是寫入JSON數組的示例代碼:
import json data = [{'name': 'Alice', 'age': 18}, {'name': 'Bob', 'age': 20}, {'name': 'Clare', 'age': 22}] with open('data.json', 'w') as f: json.dump(data, f, indent=2)
在本例中,使用Python的列表數據類型存儲多個字典數據,然後將其寫入JSON文件中。可以使用json.load()函數從JSON文件中讀取數據,並解析為Python對象。以下是解析JSON數組的示例代碼:
with open('data.json', 'r') as f: data = json.load(f) print(data[1]['name']) # 輸出 'Bob'
在本例中,使用json.load()函數從data.json文件中讀取數據,將其解析為列表類型的Python對象。可以通過下標訪問列表元素,或者使用循環遍歷整個列表。
八、Python獲取JSON中的某個值
在Python處理JSON數據時,經常需要獲取JSON對象中的某個鍵值對。可以使用Python的字典操作符或者get()函數獲取指定鍵的值。以下是示例代碼:
import json data = {'name':'David', 'age':30, 'hobby': 'reading'} json_str = json.dumps(data) # 使用Python的字典操作符獲取鍵值對 print(data['age']) # 輸出 30 # 使用get()函數獲取值 data_dict = json.loads(json_str) # 將JSON字符串解析為Python對象 hobby = data_dict.get('hobby', 'No hobby!') # 獲取鍵'hobby'對應的值或者默認值'No hobby!' print(hobby) # 輸出 'reading'
在本例中,使用Python的字典操作符或者get()函數獲取鍵為’age’和’hobby’的值。另外,使用json.loads()函數將JSON字符串解析為Python對象。
原創文章,作者:BYUL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144143.html