代码之家  ›  专栏  ›  技术社区  ›  CDNthe2nd

python-如果json元素“无效”,请尝试另一个元素

  •  0
  • CDNthe2nd  · 技术社区  · 6 年前

    所以我一直在玩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

    1 回复  |  直到 6 年前
        1
  •  1
  •   chepner    6 年前

    999999_999 get

    # 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