'Execute all statements in try/except even after encountering exception [Python]

I'm trying to extract values from JSON input using python. There are many tag that I need to extract and not all JSON files have the same structure as the sources are multiple. Sometimes there is a possibility that a tag might be missing. So, a KeyError is bound to happen. If a tag is missing then respective variable will by default be None and it will be returned as a list (members) to the main call.

I tried calling a function to pass each tags into an individual try/except. But, I get hit by an error on the function call itself where the tag is being passed. So, instead I tried the below code but it skips any subsequent lines even if the tags are present. Is there a better way to do this?

def extract(self):
    try:
        self.data_version = self.data['meta']['data_version']
        self.created = self.data['meta']['created']
        self.revision = self.data['meta']['revision']
        self.gender = self.data['info']['gender']
        self.season = self.data['info']['season']
        self.team_type = self.data['info']['team_type']
        self.venue = self.data['info']['venue']
        status = True
    except KeyError:
        status = False
    members = [attr for attr in dir(self) if
               not callable(getattr(self, attr)) and not attr.startswith("__") and getattr(self, attr) is None]
    return status, members

UPDATED: Thanks Barmar & John! .get() worked really well.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source