如果出现异常,我怎样才能使值变为 "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')
...
我正在存储来自 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')
...