<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在 Python 中有效使用 JSON 的6個(gè)技巧

          共 3061字,需瀏覽 7分鐘

           ·

          2021-03-23 17:24

          點(diǎn)擊下面卡片關(guān)注AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂”

          重磅干貨,第一時(shí)間送達(dá)


          引言


          JSON(JavaScript對(duì)象表示法的縮寫)是一種開放標(biāo)準(zhǔn)。雖然它的名字并不意味著這樣,但它是一種獨(dú)立于語(yǔ)言的數(shù)據(jù)格式。JSON 用于存儲(chǔ)和交換數(shù)據(jù)。它是一種流行的數(shù)據(jù)格式,因?yàn)樗埠苋菀诪槿祟愖x寫。在 Python 中使用 JSON 非常簡(jiǎn)單!Python 有兩種數(shù)據(jù)類型,它們組成了在 Python 中使用 JSON 的完美工具: dictionary 和 lists。


          用 Python 導(dǎo)入 JSON 庫(kù)


          Python 附帶了一個(gè)強(qiáng)大而優(yōu)雅的 JSON 庫(kù),可以幫助你對(duì) JSON 進(jìn)行解碼和編碼。它可以通過(guò)以下方式導(dǎo)入:

          import json

          1. 如何在 Python 中解析 JSON


          解析 JSON 數(shù)據(jù)的字符串(也稱為解碼 JSON)就像使用 JSON.load (...)(load 是 load string 的縮寫)一樣簡(jiǎn)單。


          下面是一個(gè)使用 json.loads 的例子:

          >>> jsonstring = '{"name": "erik", "age": 38, "married": true}'>>> data = json.loads(jsonstring)>>> print(data){'name': 'erik', 'age': 38, 'married': True}

          輸出可能看起來(lái)像字符串,但實(shí)際上它是一個(gè)字典,我們可以在代碼中使用它,例如:

          >>> type(data)<class 'dict'>>>> print('Hello', data['name'], "you're", data['age'], 'years old')Hello erik you're 38 years old

          2. 用 Python 編碼 JSON


          使用Python編碼JSON數(shù)據(jù)就像解碼一樣容易。使用 json.dumps (...)(“ dump to string”的縮寫)將包含 dictionary、 lists 和其他類型的 Python 對(duì)象轉(zhuǎn)換為字符串:

          >>> data = {'name': 'erik', 'age': 38, 'married': True} >>> json.dumps(data) '{"name": "erik", "age": 38, "married": true}'

          這是同一個(gè)文檔,轉(zhuǎn)換回一個(gè)字符串!如果你想讓 JSON 文檔對(duì)于人們來(lái)說(shuō)更具可讀性,請(qǐng)使用縮進(jìn)選項(xiàng)。它將很好地格式化 JSON,使用空格字符:

          >>> data = {'name': 'erik', 'age': 38, 'married': True}>>> print(json.dumps(data, indent=2)){  "name": "erik",  "age": 38,  "married": true}

          3. 使用 JSON 模塊漂亮地打印 JSON


          Python 的 JSON 模塊也可以在命令行中使用:

          $ echo "{ \"name\": \"Monty\", \"age\": 45 }" | \ python3 -m json.tool{     "name": "Monty",    "age": 45}

          如果你對(duì)此感興趣,可以嘗試使用jq工具。


          4. 如何用 python 讀取 JSON 文件


          除了 json.loads 之外,還有一個(gè)名為 json.load 的函數(shù)(不帶 s)。它將從文件中加載數(shù)據(jù)。如果你想把 JSON 文件的內(nèi)容讀入 Python 并解析它,可以使用下面的例子:

          with open('data.json') as json_file:    data = json.load(json_file)    ...

          5. 如何在 Python 中將 JSON 寫入文件


          json.dump函數(shù)用于將數(shù)據(jù)寫入JSON文件。

          data = {'name': 'Eric', 'age': 38 }with open('data.json', 'w') as json_file:    json.dump(data, json_file)

          6. 使用 JMESPath 搜索 JSON

          JMESPath是JSON的查詢語(yǔ)言。它允許你輕松地從 JSON 文檔中獲取所需的數(shù)據(jù)。如果你以前使用過(guò) JSON,你可能知道獲取嵌套值很容易。


          例如: doc [“ person”][“ age”]會(huì)在一個(gè)文檔中給出年齡的嵌套值,如下所示:

          {  "persons": {    "name": "erik",    "age": "38"  }}

          但是如果你想從一組人中提取出所有的年齡字段,在一個(gè)文檔中像這樣:

          {  "persons": [    { "name": "erik", "age": 38 },    { "name": "john", "age": 45 },    { "name": "rob", "age": 14 }  ]}

          我們可以編寫一個(gè)簡(jiǎn)單的循環(huán),遍歷所有的人。但是循環(huán)速度很慢,給代碼帶來(lái)了復(fù)雜性。這就是 JMESPath 的用武之地!


          這個(gè) JMESPath 表達(dá)式可以完成任務(wù):

          persons[*].age

          它將返回一個(gè)包含所有年齡段的數(shù)組: [38,45,14]。


          假設(shè)你想過(guò)濾這個(gè)列表,只得到名為‘erik’的人的年齡。你可以使用一個(gè)過(guò)濾器:

          persons[?name=='erik'].age

          看看這是多么自然和快捷!


          JMESPath不是Python標(biāo)準(zhǔn)庫(kù)的一部分,這意味著你需要使用pip來(lái)安裝它。

          $ pip3 install jmespath$ python3Python 3.8.2 (default, Jul 16 2020, 14:00:26)>>> import jmespath>>> j = { "people": [{ "name": "erik", "age": 38 }] }>>> jmespath.search("people[*].age", j)[38]>>>


          個(gè)人微信(如果沒(méi)有備注不拉群!
          請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱



          下載1:何愷明頂會(huì)分享


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!



          下載3 CVPR2021

          AI算法與圖像處公眾號(hào)后臺(tái)回復(fù):CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文

          點(diǎn)亮 ,告訴大家你也在看



          瀏覽 47
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲黄色电影大全 | 激情 小说 图片 亚洲 伦 | 先锋成人视频 | 影片-69AV国产 | 五月天操逼图 |