使用字符串格式将参数传递到Python中的JSON查询

2024-06-17 09:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用.format()或其他方法,它允许我在Python中向JSON查询传递参数。我在Python中使用了.format()来使用SQL,以及将参数传递到网站链接等方面。理想情况下,我希望能够在开始时定义查询中的任何一个变量。如果有的话,我只想知道为什么.format()在这里不起作用。在

我已经搜索了很多,但还没有找到一个具体的例子来解决这个问题,所以如果这看起来很明显的话,我深表歉意。在

这是尝试使用.format()时返回的错误:

Traceback (most recent call last):
File "rti3.py", line 25, in <module>
}""".format(adgroup)
KeyError: '\n\t\t\t\t"category1"'

这是我的代码:

^{pr2}$

Tags: 方法jsonformatmostsql参数定义网站
3条回答

一种方法是加载json字符串并进行必要的更改。一切都是关于格式化的东西。在

import json
campaignid = 0

data = json.loads("""{"category1": "","kpi_or": false,"campaign_id": {},"pub_bid_rates":1000,"creatives": [{"creative_type":"video", "banner_size":"320x250"}],"geotargets": [{"type":6,"value":["us"]}],"target_profiles": [],"publishers": []}""")
data['campaign_id']=campaignid
json.dumps(data)

输出

^{pr2}$

.format()不工作,因为字符串中的所有{...}表达式都被解释为格式说明符。这可以通过将大括号加倍并为除{campaignid}之外的所有内容写{{...}}来解决,但是在您的具体情况下,最好完全放弃使用.format()。相反,只需将JSON作为本机Python对象编写:

query_data = {
    "category1": "",
    "kpi_or": False,
    "campaign_id": campaignid,
    "pub_bid_rates":1000,
    "creatives": [{"creative_type":"video", "banner_size":"320x250"}],
    "geotargets": [{"type":6,"value":["us"]}],
    "target_profiles": [],
    "publishers": []
}

然后使用json.dumps将其转换为字符串:

^{pr2}$

尝试将数据存储为字典而不是格式字符串。在

data = {"query": {"category1": "",
                  "kpi_or": False,
                  "campaing_id": campaignid,
                  "pub_bid_rates": 1000,
                  "creatives": [{"creative_type": "video",
                                 "banner_size": "320x250"}],
                  "geotargets": [{"type": 6,
                                  "value": ["us"]}],
                  "target_profiles": [],
                  "publishers": []}}

print(json.dumps(data))

输出:

^{pr2}$

相关问题 更多 >