不匹配不是Python中的NoneType条件

时间:2013-02-13 17:35:04

标签: python

我对这段代码有疑问。

if tdinst[0].string in features:
       nameval=tdinst[0].string
       value=tdinst[1].string
       print type(value)
       if type(value) is not None:
               print"it should not come here"
              value=value.replace("\n","")
              value=value.replace("\t","")

我得到'NoneType'对象没有属性'replace'。为什么它会进入第二个条件?

2 个答案:

答案 0 :(得分:7)

NoneTypeNone之间存在差异。

你需要检查

if type(value) != NoneType:

if value is not None:

但也许以下内容更为简单:

if tdinst[0].string in features:
    nameval = tdinst[0].string
    value = tdinst[1].string
    if value: # this is also False if value == "" (no need to replace anything)
        value = value.replace("\n","").replace("\t","")

或者,如果在大多数情况下tdinst[1].string 不是None,那么异常处理会更快:

try:
    value = tdinst[1].string.replace("\n","").replace("\t","")
except TypeError:
    value = None

答案 1 :(得分:4)

没有None这样的类型。你可能意味着NoneType

if type(value) is not NoneType:

但是你为什么要对type进行测试?只需检查value

if value is not None: