簡體   English   中英

用 Python 模擬 Bash jq

[英]Emulate Bash jq with Python

我在名為 data.json 的文件中有以下 JSON

{
  "tenant_admins": [
    {
      "is_user": true,
      "id": "id-1",
      "user_id": "P000216",
      "email": "test1@test.com",
      "first_name": "Test",
      "last_name": "One",
      "display_name": "Test One",
      "status": "active",
      "roles": {
        "manage_access": true,
        "manage_idp": true
      }
    },
    {
      "is_user": false,
      "id": "id-2",
      "user_id": "P000218",
      "email": "test2@test.com",
      "first_name": "Test",
      "last_name": "Two",
      "display_name": "Test Two",
      "status": "active",
      "roles": {
        "manage_access": true,
        "manage_idp": true
      }
    },
    {
      "is_user": true,
      "id": "id-3",
      "user_id": "P000230",
      "email": "test3@test.com",
      "first_name": "Test",
      "last_name": "Three",
      "display_name": "Test Three",
      "status": "active",
      "roles": {
        "manage_access": true,
        "manage_idp": true
      }
    }
  ]
}

當我運行這個 bash 命令時:

cat data.json| jq ".tenant_admins[].id"

我得到了我期望的以下響應:

"id-1"
"id-2"
"id-3"

如何在 Python 中進行相同的操作? 到目前為止,我已經能夠使用 json 模塊獲取該信息,但我必須創建一個 for 循環才能這樣做。 是否有任何我可能錯過的內置內容,或者我是否一直在使用 for 循環?

謝謝。

我要感謝@jarmod 和@charles duffy 將我指向 jq python 模塊。 經過一番摸索,我能夠創建以下內容:

import json
import jq

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

ids = jq.compile('.tenant_admins[].id').input(data).all()

# Print the extracted names
print(ids)

這導致:

['id-1', 'id-2', 'id-3']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM