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

时间:2018-04-23 15:31:20

标签: python python-3.x string-formatting

我有一个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模板中使用它?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

根据[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)返回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>'