在JSON中使用变量

2024-05-19 08:37:50 发布

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

实际上,我要做的是用我拥有的一些变量替换JSON字符串中的一些值。以下是我的代码快照:

listproxies = ['proxy1', 'proxy2', 'proxy3']

PROXY = random.choice(listproxies)

proxy_host = PROXY[:-28]
proxy_port = '12345'
proxy_username = PROXY[25:-9]
proxy_password = 'password'

print("USING PROXY: "+proxy_host+":"+proxy_port+":"+proxy_username+":"+proxy_password)

manifest_json = """
{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}
"""

background_js = """
var config = {
        mode: "fixed_servers",
        rules: {
          singleProxy: {
            scheme: "http",
            host: """+proxy_host+""",
            port: parseInt("""+proxy_port+""")
          },
          bypassList: ["foobar.com"]
        }
      };

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
        authCredentials: {
            username: """+proxy_username+""",
            password: """+proxy_password+"""
        }
    };
}

chrome.webRequest.onAuthRequired.addListener(
            callbackFn,
            {urls: ["<all_urls>"]},
            ['blocking']
);
"""

如您所见,在background_js中,我试图调用变量proxy_hostproxy_port,然后proxy_username&;proxy_password,这似乎不起作用。。。你知道吗


Tags: hostportversionjsusernamepasswordallchrome
2条回答

JSON格式只允许双引号:"" 不允许使用单引号''""" """。你知道吗

使用内置的^{}库,把这些东西当作字典来处理。你知道吗

>> import json
>> manifest_as_json = json.loads(manifest_json)
>> manifest_as_json['version'] = 1.2.3
>>
>> import pprint
>> pprint.pprint(manifest_as_json)
{
    "version": "1.2.3",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}

此外,如果您愿意,可以在Python中使用fstrings,只需在字符串中嵌入变量:

>> pretty_proxy_host = f"This is my {proxy_host}"
>> print(pretty_proxy_host)
This is my proxy1

相关问题 更多 >

    热门问题