2

これらのコードに問題があります。

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 ' object has no attribute 'replace' を取得しています。条件が 2 番目の場合はなぜですか?

4

2 に答える 2

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
于 2013-02-13T17:36:42.973 に答える
4

のようなタイプはありませんNone。あなたはおそらく意味しましたNoneType

if type(value) is not NoneType:

しかし、なぜあなたはに対してテストしているのtypeですか?確認してくださいvalue

if value is not None:
于 2013-02-13T17:36:53.843 に答える