在 string.format() 中使用 JSON 对象?

Using JSON Object inside string.format()?

我有一个 Python3 脚本,它采用输入 HTML 模板并使用此 JSON 填充一些数据并创建输出 HTML.

Python 脚本 -

with open('./jsonInp.json') as jsonFile:
    jsonData = json.load(jsonFile)

inp_f = open('brandedTemplate.html', 'r+')
htmlInp = inp_f.read().format(links = jsonData['links'])

我的 JSON 文件 -

{
    "links" : {
        "one" : "www.one.com",
        "two" : "www.two.com",
    } 
}

现在在输入 HTML 中使用它,例如:

...
<a href={links.one}></a>
...

但这不起作用。 links['one'] 也没有。

JSON 加载,一切正常。我还可以使用 .format 函数中的数组。只是找不到如何在任何地方使用这个对象。从 type(jsonData['links']),我知道它是一个 Python 字典。

有没有办法在 html 模板中使用它?

根据 [Python]: Format examples,您应该使用(模板如):

<a href={links[one]}></a>

as html 格式说明符(因为 [Python]: json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) returns a dict)。

示例:

>>> json_dict
{'links': {'one': 'www.one.com', 'two': 'www.two.com'}}
>>> href_text
'<a href={links[one]}></a>'
>>> href_text.format(links=json_dict["links"])
'<a href=www.one.com></a>'

您的 jsonData 变量是一个 python 字典。要以迷你语言格式访问值,您需要使用 {my_dict[my_key]}。请注意,密钥未包含在引号中。 要修复您的示例,html 输入应如下所示:

...
<a href={links[one]}></a>
...