我对这段代码有疑问。
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'。为什么它会进入第二个条件?
答案 0 :(得分:7)
NoneType
和None
之间存在差异。
你需要检查
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: