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

Python字符串空白空值校验中np.NaN布尔判断为真的原因及解决方法

问题产生原因

Python 中 np.NaN 的布尔值判定结果为 True。Python 仅对None、数值0、空序列/空容器(空字符串、空列表、空字典等)判定布尔值为False,np.NaN不属于上述范围,因此if check会直接进入True分支,输出tru。

额外注意你代码中存在笔误:函数定义时名称为check_for_empty_spaces,后续调用时全部写成了check_for_empty_strings,实际运行前需要先修正该问题。

正确校验方案

你可以根据需求二选一:

方案1:调整函数返回值为Python原生空值(更推荐)

将原函数返回np.NaN的逻辑改为返回Python原生空值None,即可直接用if check完成判断,符合Python的常规开发习惯,代码如下:

def check_for_empty_spaces(val):
    val = val.rstrip()
    return val if len(val) > 0 else None

修改后你原有校验代码if (check)即可正常运行:非空字符串判定为True,None判定为False,完全匹配你的校验需求。

方案2:保留返回np.NaN的逻辑,新增NaN判断

如果业务要求必须返回np.NaN,校验时需要额外判断值是否为NaN,代码如下:

import numpy as np

check = check_for_empty_spaces('')
# 先判断是否为NaN,再判断是否为有效值
if not (isinstance(check, float) and np.isnan(check)) and check:
    print('tru')
    print(check)
else:
    print('dsj')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:06:03