我在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