将变量值插入 URL(或任何字符串)

Inserting variable values into URL (or any string)

我目前正在使用 urllibjson 对 REST API 执行 JSON 请求,如下所示:

import urllib, json

url = "http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0"

response = urllib.urlopen(url)

data = json.loads(response.read())

for index, entry in enumerate(data, 1):
    print ('Item {}'.format(index))
        for name, value in entry.items():
            print '{}: {}'.format(name, value)

我正在与之交互的 API 有能力,如果 vendor_idproduct_id 被更改,它将因为值暗示更改它为供应商和产品,因此会产生不同的响应。

因此我想知道是否可以通过 raw_input 函数或类似操作在 url 字符串中注入和更改 vendor_idproduct_id 数字,用户可以输入这两个数值?在这种情况下使用 % 运算符是否不正确,因为这是要用字符串注入的字符串?

字符串操作很简单:

vendor_id = raw_input("Vendor ID: ")
product_id = raw_input("Product ID: ")
url = ("http://www.cvedetails.com/json-feed.php?"
       "numrows=5"
       "&vendor_id={0}"
       "&product_id={1}"
       "&version_id=0"
       "&hasexp=1"
       "&opec=1"
       "&opov=1"
       "&opcsrf=1"
       "&opfileinc=1"
       "&opgpriv=0"
       "&opsqli=1"
       "&opxss=0"
       "&opdirt=0"
       "&opmemc=0"
       "&ophttprs=0"
       "&opbyp=0"
       "&opginf=0"
       "&opdos=0"
       "&orderby=0"
       "&cvssscoremin=0"
       .format(vendor_id, product_id))

>>> url
'http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0'