我在Python中使用Google的PageSpeed Insights API,并且遇到了一个令人困惑的问题。 API向我呈现格式字符串和该格式字符串的参数,我需要弄清楚如何实际格式化字符串。问题在于争论是以非常奇怪的方式给出的。Python - 字符串作为命名变量格式字符串的关键字
这是怎样的参数格式字符串提交给我(我展示它作为一个任务,使其更清晰):
args = [
{
'type': 'INT_LITERAL',
'value': '21',
'key': 'NUM_SCRIPTS'
},
{
'type': 'INT_LITERAL',
'value': '20',
'key': 'NUM_CSS'
}
]
这是一个样本格式的字符串,也给我用API:
format = 'Your page has {{NUM_SCRIPTS}} blocking script resources and {{NUM_CSS}} blocking CSS resources. This causes a delay in rendering your page.'
我知道,有时人们希望避免回答这个问题问,而是提供一个符合他们的信仰有关编码“正确”和“错误的”,所以要重申一个答案,我我通过API给出了参数和格式字符串。我不是自己创造它们的,所以我不能以更直接的方式来做到这一点。
我需要知道的是如何提取args列表中的字典的关键字段,以便我可以以允许将值字段传递给命名参数的方式与"".format
一起使用它们。
我很抱歉,如果这在某种程度上是非常明显的;我对Python相当陌生,对于小细节我不太了解。我确实尽了我的尽职调查并在询问之前寻找答案,但我没有发现任何问题,也不是一个容易搜索的问题。
编辑: 我想,也许这件事情“的类型的字典列表”是司空见惯的与谷歌的API或什么的,也许还有的论据(如string.format_map
)关联自动方式。我以最简单的方式完成了这个任务,没有string.format
。
for x in args:
format = format.replace('{{' + x['key'] + '}}', x['value'])
这是你想要的吗?对于NUM_CSS'(args中item的项目如果item [“key”] ==“NUM_CSS”)。next()['value']'和NUM_SCRIPTS'(args中item的项目,如果item [“key”] = =“NUM_SCRIPTS”)。next()['value']' – Rohanil
坦率地说,这个清单是无稽之谈。你的目标是查找'NUM_SCRIPTS'和'NUM_CSS'的值,但是该列表只允许你搜索某个键的值,而某个键与另一个键有不同的键值。它应该是'args = {'NUM_SCRIPTS':21,'NUM_CSS':20}'甚至可以在没有大量错误代码的情况下远程使用。 – TigerhawkT3
@Rohanil - 不,不同的格式字符串有不同的类型和数量的变量,我不能硬编码名称。 – bpunsky