首页 > 解决方案 > 在 for 循环中使用 Python .format(urlencode)

问题描述

我有一个带有一些 ID 的字典作为值列表。对于这个列表,我想使用一个循环来使用 .format 在 URL 中插入每个 ID 和键。

目标是 URL 看起来像这样:

data = urllib.request.urlopen('https://lignumdata.ch/api/v1.cfc?method=getBauteil&type=all&condition={"**KEY**":"**ITEM FROM LOOP**"}').read()

我该如何进行?

我的代码:

myDict = {'={"id":'['1838A0BD-EFED-AC5F-110BFF3266C2A08C', '1838C66B-0E3C-0073-A52F55BFEF1CDDD7', '1838D369-FE2D-54FD-993706CE152D2A1D', '18398B8C-0B6B-33A6-92BAA6FB216995F9', '18399F2E-BCA9-0457-C28BAFA5F7466181', '1839AD62-B125-1D7C-E4FD205840A3B7B4', '183A43AD-9D1C-8121-D3FA5FB69C2BE2CF', '183A53B2-CBB5-13B3-29B77034EABCE1C8', '183A61F0-CD79-878B-EA9943B8C9EA12D0', '183A692D-ED62-DA89-057A2630F061B29F', '183AC5C6-BF39-0359-12C6FBB14392EAFC', '183AD460-9F06-3841-E660630702C40991']}

结果应如下所示:

data = urllib.request.urlopen('https://lignumdata.ch/api/v1.cfc?method=getBauteil&type=all&condition={"id":"192E4CD9-B41B-09E3-1C2148F313A3A83B"}').read()

谢谢你的帮助!:)

标签: python-3.xurlencodeurlopen

解决方案


在 python3 中,您可以使用f' '语法来格式化字符串。将其与 Lambda 函数相结合可以定义您的格式化模板。

同样要遍历字典的键,您可以使用dict.keys函数。

d = {"id": ["1", "2", "3"]}
url = lambda k,v : f'https://lignumdata.ch/api/v1.cfc?method=getBauteil&type=all&condition={{"{k}":"{v}"}}'

for k in dict.keys(d):
    for v in d[k]:
        print(url(k,v))


推荐阅读