You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何添加条件判断仍触发KeyError: #text?字典键缺失问题咨询

问题分析与解决

你的代码之所以还会抛出KeyError: #text,核心原因是在执行判断逻辑之前,你已经主动访问了不存在的键:

if house["condition"]["#text"] is str:  # 这里已经在取#text的值了,不存在就直接报错
    condition = ["condition"]["#text"]
else:
    condition = "bananas"

当house["condition"]里没有#text这个键时,house["condition"]["#text"]这一步直接触发KeyError,根本轮不到后面的if判断执行。另外is str的写法也不对,判断类型应该用isinstance(),不过这不是当前报错的主要原因。

几种可行的解决方法

方法1:用字典的get()方法(最简洁)

get()方法允许你指定键不存在时的默认值,同时可以额外判断类型:

# 基础版:直接取#text,不存在就用默认值"bananas"
condition = house["condition"].get("#text", "bananas")

# 进阶版:同时判断值是否为字符串类型
text_val = house["condition"].get("#text")
condition = text_val if isinstance(text_val, str) else "bananas"

方法2:用try-except捕获异常

直接尝试取值,捕获KeyError时处理默认情况:

try:
    condition = house["condition"]["#text"]
    # 额外判断类型
    if not isinstance(condition, str):
        condition = "bananas"
except KeyError:
    condition = "bananas"

方法3:先检查键是否存在

先确认#text在house["condition"]里,再取值判断:

if "#text" in house["condition"]:
    text_val = house["condition"]["#text"]
    condition = text_val if isinstance(text_val, str) else "bananas"
else:
    condition = "bananas"

内容的提问来源于stack exchange,提问作者Paulo Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:25:21