我对Python相当陌生,对JS更加熟悉,因此我对如何做到这一点有些迷茫。
基本上,我从Google的API中获得了JSON,第一个结果并不总是符合我的需要。但是我只需要返回true的第一个结果即可。
我很确定我在多个区域中语法错误,但是我需要第一个imageUrl
,其中[gi] ['pagemap']为真。
item_len = len(deserialized_output['items'])
for gi in range(item_len):
def loop_tgi():
if deserialized_output['items'][gi]['pagemap'] is True:
imageUrl = deserialized_output['items'][gi]['pagemap']['cse_image'][0]['src']
break
loop_tgi()
答案 0 :(得分:0)
您可以直接遍历项目,而无需使用索引
在Python循环中泄漏了一个变量,因此当您从循环中中断时,gi变量将具有您所需要的(或最后一个值)。
要克服“或最后一个值”,我们可以使用else来检查我们是否完整循环了
public function validationIpv4OrFqdn(Validator $validator)
{
$validator
->add('address', 'notEmpty', [
// Regex for FQDN
'rule' => ['custom', "/(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}$)/i"],
'message' => __('Invalid FQDN')
]);
$validator
->add('address', 'notEmpty', [
'rule' => ['ip', 'ipv4'],
'message' => __('Invalid IP Address')
]);
return $validator;
}
稍后您尝试访问for gi in deserialized_output['items']:
if gi['pagemap'] is True:
break
else:
gi = None # or throw some sort of exception when there is no good elements
if gi: # checking that returned element is good
print(gi) # now we can use that element to do what you want!
imageUrl = gi['pagemap']['cse_image'][0]['src']
时,我有点担心您的gi['pagemap'] is True
。这意味着gi['pagemap']['cse_image']
不是布尔值,而是某种对象。
如果这是字典,则如果该字典不为空,则可以检查gi['pagemap']
为True。但是如果if gi['pagemap']:
是gi['pagemap'] is True
False
将是gi['pagemap']