Jmespath सेटिंग jmespath expr गतिशील रूप से

Sep 07 2020

मैं इस प्रकार jmespath का उपयोग कर रहा हूँ

data = {
    "value": [
        {
            "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
            "id": "5b218778-e7a5-4d73-8187-f10824047715",
            "name": "SalesMarketing2",
            "webUrl": "https://app.powerbi.com/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/reports/5b218778-e7a5-4d73-8187-f10824047715",
            "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48",
        },
        {
            "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
            "id": "5b218778-e7a5-4d73-8187-f10824047715",
            "name": "SalesMarketing3",
            "webUrl": "https://app.powerbi.com/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/reports/5b218778-e7a5-4d73-8187-f10824047715",
            "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48",
        },
    ]
}

और जेम्‍सैथ एक्‍सप्रैस को गतिशील रूप से सेट करना:

report= 'SalesMarketing3'
jmespath.search(f"'value[?name == {report}]'", data)

"SalesMarketing3" के अनुरूप शब्दकोष प्राप्त करने के बजाय, मुझे आउटपुट निम्नानुसार मिल रहा है, क्या मुझे कुछ याद आ रहा है?

'मान [? नाम == SalesMarketing3]'

किसी भी सहायताको बहुत सराहा जाएगा।

जवाब

3 β.εηοιτ.βε Sep 07 2020 at 02:59

आपका मुद्दा इस तथ्य से आ रहा है कि आपको स्ट्रिंग या कच्चे स्ट्रिंग शाब्दिक पर खोजना होगा SalesMarketing3।
JMESPath में:

  • एक स्ट्रिंग एकल उद्धरण द्वारा सीमांकित है: 'SalesMarketing3'
  • एक कच्ची स्ट्रिंग शाब्दिक backticks द्वारा सीमांकित है: `SalesMarketing3`

यह देखते हुए example.py :

import jmespath

data = {
    "value": [
        {
            "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
            "id": "5b218778-e7a5-4d73-8187-f10824047715",
            "name": "SalesMarketing2",
            "webUrl": "https://app.powerbi.com/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/reports/5b218778-e7a5-4d73-8187-f10824047715",
            "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48",
        },
        {
            "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
            "id": "5b218778-e7a5-4d73-8187-f10824047715",
            "name": "SalesMarketing3",
            "webUrl": "https://app.powerbi.com/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/reports/5b218778-e7a5-4d73-8187-f10824047715",
            "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48",
        },
    ]
}
report = 'SalesMarketing3'

print(jmespath.search(f"value[?name == `{report}`]", data))
## Another equivalent is:
# print(jmespath.search(f"value[?name == '{report}']", data))

यह अपेक्षित आउटपुट देता है:

[
  {
    "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
    "id": "5b218778-e7a5-4d73-8187-f10824047715",
    "name": "SalesMarketing3",
    "webUrl": "https://app.powerbi.com/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/reports/5b218778-e7a5-4d73-8187-f10824047715",
    "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48"
  }
]