Python中识别JSON空列表并设置数据库插入占位符的问题
问题解决
你的代码核心问题是:当emailAddresses是空列表时,for email in item['contacts']['emailAddresses']这个循环根本不会执行,所以里面的判断逻辑完全没机会触发,自然不会输出"boo"。
直接修改代码,先判断整个列表是否为空,再决定输出内容:
results = response.json()['data'] for item in results: emails_list = item['contacts']['emailAddresses'] # 判断列表是否为空(空列表在Python中布尔值为False,not后转为True) if not emails_list: print("boo") else: # 列表非空时,遍历每个邮箱对象输出地址 for email_obj in emails_list: print(email_obj['emailAddress'])
补充说明
not emails_list是Python中判断空列表最简洁的方式,和len(emails_list) == 0或者emails_list == []效果完全一致,但更符合Pythonic写法。- 如果你的需求是每个条目(item)对应一个值(比如空列表时存"boo",非空时存第一个邮箱或者拼接所有邮箱),可以调整逻辑,比如:
for item in results: emails_list = item['contacts']['emailAddresses'] if not emails_list: email_value = "boo" else: # 取第一个邮箱地址,或者用','.join拼接所有 email_value = emails_list[0]['emailAddress'] # 这里可以把email_value用于数据库插入 print(email_value)
内容的提问来源于stack exchange,提问作者KillerSheltie
相关产品推荐
相关产品推荐

