如果出现异常,我怎样才能使值变为 "NULL"?

How can I make it so that a value becomes "NULL" if there's an Exception?

我正在存储来自 API 的数据(然后我将其存储为泡菜),有时由于缺少字段而出现错误。我想知道如何才能让它只针对有问题的变量并将其值记录为“NULL”。

问题是我存储了 6 个不同的变量,因此如果其中一个有问题,所有其他 5 个变量都将被跳过。相反,我希望那个(或那些)有问题的变量被值“NULL”(或 None)替换。

元=loaded_from_pickle('myData.pickle')

def getAllData():

    data = []
    for i in range(len(meta)):
        try:
            name = meta[i]['base']['name']
            weight = meta[i]['base']['weight']
            height = meta[i]['base']['height']

            age = meta[i]['secondary']['age']
            eye_color = meta[i]['secondary']['eye_color']
            birthday = meta[i]['secondary']['birthday']

            data.append((name, weight, height, age, eye_color, birthday))

        except:
            pass

    return data

print(getAllData())

所以发生的事情是我最终丢失了很多数据点,因为有些数据没有“eye_color”或诸如此类的东西。所以当有一个“except”时我应该做的应该是“使有问题的变量=“NULL””,而不是仅仅传递整个循环。

不要直接使用方括号访问键,而是尝试使用 get() 它 returns 如果找不到键,默认值 None

查看此答案了解更多信息

您可以在您的代码中使用它:

name = meta[i]['base'].get('name')
weight = meta[i]['base'].get('weight')
height = meta[i]['base'].get('height')
...

假设元是一个列表

,您也可以使用 enumerate 重写您的 for 循环
for index, value in enumerate(meta):
    name = value['base'].get('name')
    ...