微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jmespath动态设置jmespath expr

如何解决Jmespath动态设置jmespath expr

我正在按如下方式使用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","name": "SalesMarketing3",]
}

并将jmespath expr动态设置为:

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

我没有得到与“ SalesMarketing3”相对应的字典,而是得到如下输出,我丢失了什么吗?

'value [?name == SalesMarketing3]'

我们非常感谢您的帮助。

解决方法

您的问题是由于您必须搜索字符串原始字符串文字 SalesMarketing3
在JMESPath中:

  • 字符串用单引号引起来:'SalesMarketing3'
  • 原始字符串文字由反引号分隔:`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","name": "SalesMarketing3",]
}
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","embedUrl": "https://app.powerbi.com/reportEmbed?reportId=5b218778-e7a5-4d73-8187-f10824047715&groupId=f089354e-8366-4e18-aea3-4cb4a3a50b48"
  }
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。