检查字符串中的空格和 np.NaN

check for empty spaces & np.NaN in strings

我写了一个函数,如果传递的 val 只有空格,例如 ' ',它们都会被删除,我们 return np.Nannull值。

def check_for_empty_spaces(val):
    val = val.rstrip()
    if len(val)<1:
        return np.NaN
    else:
        return val
        
print(len(check_for_empty_strings('WHAJS  ')))
print(check_for_empty_strings('WHAJS'))
print(check_for_empty_strings('  '))
print(check_for_empty_strings(''))    

函数 returns 随心所欲。输出为:

5
WHAJS
nan
nan

但是现在当我使用这个函数时,我想检查字符串是

  1. 不仅仅是空格
  2. 不为空

然而,当我检查这个时:

check = check_for_empty_strings('')
if (check):
    print('tru')
    print(check)
else:
    print('dsj')

我得到这个输出

tru
nan

为什么第一个是真的?如果检查 == NaN 那么 if (check) 不应该是 False 吗?我还能如何检查我的值不只是空格或 NULL。

你可以检查 np.nan:

np.isnan(check)

或者您可以 return None 而不是 np.nan 然后检查它,就像您在 if 条件中所做的那样,因为 bool(None) 计算为 False.另一方面,如果你计算 bool(np.nan),你得到的输出是 True.

check = check_for_empty_strings('')
if (np.isnan(check)):
    print('tru')
    print(check)
else:
    print('dsj')

这个有效