所以我一直在研究Json和Python,基本上我有一个Json文件,其中有时不包含某些元素,有时却不包含。基本上我想做的是检查包含“ ImageUrl”的第一个元素是否在那里并且有效,然后使用该元素,否则使用另一个imageURL
"threads": [{
"id": "3a64a3b18894fb70c92b6382a1e8f735320c1cbb",
"product": {
"imageUrl": "https://hello.com/555088_401.JPG",
},
"imageUrl": "https://hello.com/images/555088_401.JPG",
}]
但是,第一个ImageURL可能在末尾包含999999_999
,并且也被视为无效。
到目前为止,我所做的是:
resp = s.get(url)
item = resp.json()['threads']
itempic = item.get('imageUrl') # Check if there is sell date
if itempic:
image = str(item['imageUrl']) # Image pic
else:
print('Picture not found')
当前仅使用第二个URL imageUrl,这不是我想要的,但它确实起作用(它还会检查imageUrl是否还包含任何内容),问题是:
如何获取第一个imageUrl元素,并检查它是否“有效”,并且末尾不包含999999_999
(如果有效且正确,则使用并打印),否则不是“有效”,则使用第二个imageUrl
答案 0 :(得分:1)
您只需要检查为999999_999
获得的任何值。如果您使用get
方法“假装”缺少的URL是可以匹配的字符串,那么会更简单。
# This assumes that you want the top-level imageURL in preference to
# the product imageURL...
def get_url(d):
for item in d['threads'], d['threads']['product']:
url = item.get('imageUrl', '999999_999')
if not re.match('999999_999', url):
return url
如您所见,假装第二次尝试可以匹配999999_999
,即使您知道不会匹配,也更简单。