欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python操作JSON文件的知識點(diǎn)整理

 更新時(shí)間:2023年01月28日 08:24:14   作者:夢想橡皮擦  
Python?提供了內(nèi)置的?json?模塊來處理?JSON?格式的文件。該模塊主要分為讀取和寫入?JSON?文件。本文主要為大家整理了一些Python操作JSON文件的知識點(diǎn),需要的可以參考一下

json 模塊

Python 提供了內(nèi)置的 json 模塊來處理 JSON 格式的文件。

該模塊主要分為讀取和寫入 JSON 文件。

讀取 JSON

使用 json.load() 或 json.loads() 方法來讀取 JSON 文件。

其中 json.load() 方法用于讀取文件中的 JSON 數(shù)據(jù),json.loads() 方法用于讀取字符串中的 JSON 數(shù)據(jù)。

寫入 JSON

使用 json.dump() 或 json.dumps() 方法來寫入 JSON 文件。

其中 json.dump() 方法用于寫入 JSON 數(shù)據(jù)到文件中,json.dumps() 方法用于將 JSON 數(shù)據(jù)轉(zhuǎn)換為字符串。

基于上述內(nèi)容可以總結(jié)一下: json.load() , json.loads() , json.dump() 和 json.dumps() 中的 s 都是字符串 string 的縮寫。

讀取與寫入基本用法如下

提前準(zhǔn)備一個(gè) travel.json 文件,存放到 python 文件所在目錄。

import json

# 讀取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 寫入json文件
with open('travel.new.json', 'w', encoding='utf-8') as f:
    json.dump(data, f)

Tops:在使用 json.load() 和 json.loads() 讀取 json 文件時(shí),如果文件中存在格式錯(cuò)誤,會拋出 ValueError 異常。

json 模塊進(jìn)階用法

控制輸出格式

在處理 JSON 文件時(shí),還可以使用 json.dump() 方法的可選參數(shù)來控制輸出的格式,例如:

  • sort_keys:按照鍵的字典序排序輸出。
  • indent:縮進(jìn)輸出,可以指定縮進(jìn)的空格數(shù)。
import json

# # 讀取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
    data = json.load(f)


with open('travel.new.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, sort_keys=True, indent=4)

此時(shí)可以比對舊文件與新文件之間的差異,可以看到縮進(jìn)關(guān)系產(chǎn)生了變化。

在 JSON 中存儲 Python 特殊類型

如果你要在 json 中存儲 python 特殊類型,例如 datetime,需要使用 json.JSONEncoder 類和 json.JSONDecoder 類來處理。

import json
from datetime import datetime

# 日期編碼
class DateEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        return json.JSONEncoder.default(self, obj)


d = {'date': datetime.now()}
json_str = json.dumps(d, cls=DateEncoder)
print(json_str)

# 日期解碼
class DateDecoder(json.JSONDecoder):
    def __init__(self):
        json.JSONDecoder.__init__(self, object_hook=self.dict_to_object)

    def dict_to_object(self, d):
        if 'date' in d:
            d['date'] = datetime.strptime(d['date'], '%Y-%m-%d %H:%M:%S')
        return d


data = json.loads(json_str, cls=DateDecoder)

print(data)

運(yùn)行代碼,可以得到編碼和解碼的輸出。

{"date": "2023-01-27 21:24:46"}
{'date': datetime.datetime(2023, 1, 27, 21, 24, 46)}

對數(shù)據(jù)進(jìn)行驗(yàn)證和清洗

JSON Schema 是一種用于驗(yàn)證 JSON 文檔的標(biāo)準(zhǔn),它可以用來確保 JSON 文檔符合預(yù)期的格式。

jsonschema 模塊需要提前安裝,示例代碼如下。

import json
import jsonschema

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "number"}
    },
    "required": ["name", "age"]
}

data = '{"name": "夢想橡皮擦", "age": 28}'

try:
    jsonschema.validate(json.loads(data), schema)
    print("可用的JSON")
except jsonschema.exceptions.ValidationError as e:
    print(e)

當(dāng)你的 json 格式正確時(shí),會輸出相應(yīng)的內(nèi)容,輸出錯(cuò)誤信息,測試代碼可以將 "required": ["name", "age"] 修改為 "required": ["name", "age" , "sex"]。

第三方模塊

在處理 JSON 格式文件時(shí)還可以使用第三方庫來更方便地操作,例如 pandas。

import pandas as pd

# 讀取json文件
data = pd.read_json('travel.json')

# 寫入json文件
data.to_json('travel.pandas.json')

還有其他第三方庫也可以用來處理 JSON 格式文件,例如:

  • ijson:迭代讀取大型 JSON 文件。
  • jsonpickle:支持將 Python 對象序列化為 JSON 格式。
  • jsonlines:簡單而高效地讀取和寫入文本文件中的 JSON 數(shù)據(jù)。
  • simplejson:提供了一種比標(biāo)準(zhǔn)庫更快的 JSON 解析器和生成器。
  • json-tricks:支持一些高級功能,例如壓縮和迭代。

到此這篇關(guān)于Python操作JSON文件的知識點(diǎn)整理的文章就介紹到這了,更多相關(guān)Python操作JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 使用 environs 庫定義環(huán)境變量的方法

    Python 使用 environs 庫定義環(huán)境變量的方法

    這篇文章主要介紹了Python 使用 environs 庫來更好地定義環(huán)境變量,本節(jié)我們以 Python 項(xiàng)目為例,說說環(huán)境變量的設(shè)置。通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 深入探究Flask的兩個(gè)高級特性之藍(lán)圖和JWT認(rèn)證

    深入探究Flask的兩個(gè)高級特性之藍(lán)圖和JWT認(rèn)證

    本文將探討 Flask 的兩個(gè)高級特性:藍(lán)圖(Blueprints)和 JSON Web Token(JWT)認(rèn)證,藍(lán)圖讓我們可以將應(yīng)用模塊化,以便更好地組織代碼;而 JWT 認(rèn)證是現(xiàn)代 Web 應(yīng)用中常見的一種安全機(jī)制,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • 使用Python的Matplotlib庫創(chuàng)建動(dòng)態(tài)圖表的技巧與實(shí)踐分享

    使用Python的Matplotlib庫創(chuàng)建動(dòng)態(tài)圖表的技巧與實(shí)踐分享

    在數(shù)據(jù)可視化領(lǐng)域,Matplotlib庫是Python中最流行和功能強(qiáng)大的工具之一,它能夠生成各種靜態(tài)圖表,如散點(diǎn)圖、折線圖和柱狀圖等,本文將介紹如何使用Matplotlib庫創(chuàng)建動(dòng)態(tài)圖表,并提供一些技巧和實(shí)踐經(jīng)驗(yàn),需要的朋友可以參考下
    2024-05-05
  • 一篇文章搞懂python的轉(zhuǎn)義字符及用法

    一篇文章搞懂python的轉(zhuǎn)義字符及用法

    這篇文章主要介紹了一篇文章搞懂python的轉(zhuǎn)義字符及用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python實(shí)現(xiàn)一鍵整理百度云盤中重復(fù)無用文件

    Python實(shí)現(xiàn)一鍵整理百度云盤中重復(fù)無用文件

    有沒有頭疼過百度云盤都要塞滿了,可是又沒有工具能剔除大量重復(fù)無用的文件?這里教你一個(gè)用Python實(shí)現(xiàn)的簡單方法,通過整理目錄的方式來處理我們云盤中無用的文件吧
    2022-08-08
  • python?pip特殊用法之pip?install?-v?-e?.命令詳解

    python?pip特殊用法之pip?install?-v?-e?.命令詳解

    這篇文章主要給大家介紹了關(guān)于python?pip特殊用法之pip?install?-v?-e?.命令的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Python面向?qū)ο笾瓷?自省機(jī)制實(shí)例分析

    Python面向?qū)ο笾瓷?自省機(jī)制實(shí)例分析

    這篇文章主要介紹了Python面向?qū)ο笾瓷?自省機(jī)制,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中的反射/自省機(jī)制概念、原理及相關(guān)屬性操作技巧,需要的朋友可以參考下
    2018-08-08
  • python正則表達(dá)式之作業(yè)計(jì)算器

    python正則表達(dá)式之作業(yè)計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了python正則表達(dá)式之作業(yè)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們
    2016-03-03
  • Python中的Nonetype類型怎么判斷

    Python中的Nonetype類型怎么判斷

    這篇文章主要介紹了Python中的Nonetype類型怎么判斷?具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解

    Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解

    本文主要介紹了Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評論