【问题标题】:check for empty spaces & np.NaN in strings检查字符串中的空格和 np.NaN
【发布时间】:2021-12-07 04:40:46
【问题描述】:

我编写了一个函数,如果传递的val 中只有空格,例如' ',它们都会被删除,我们返回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(''))    

函数根据需要返回。输出是:

5
WHAJS
nan
nan

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

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

但是,当我检查这个时:

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

我得到这个输出

tru
nan

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

【问题讨论】:

标签: python python-3.x string numpy nan


【解决方案1】:

你可以检查np.nan

np.isnan(check)

或者您可以返回None 而不是np.nan,然后像上面在if 条件中所做的那样检查它,因为bool(None) 的计算结果为False。另一方面,如果您评估 bool(np.nan),则输出为 True

【讨论】:

  • 它适用于 NaN 但是当我传递一个字符串时它会产生一个问题:stackoverflow.com/questions/69658475/…
  • 如果我检查np.isnan(''),您的 sn-p 将无法工作
  • 我编辑了我的答案
  • 不,这不是必需的。我特别想检查我的值是否为 nan,因为我还可以使用其他字符串进行测试,例如 'Jhdu' 或 'dsd'
  • @x89 你想用倒数第二条评论告诉我什么?
【解决方案2】:
check = check_for_empty_strings('')
if (np.isnan(check)):
    print('tru')
    print(check)
else:
    print('dsj')

这行得通

【讨论】:

猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2011-03-19
  • 2015-12-27
  • 2018-03-03
  • 2015-08-22
相关资源
最近更新 更多