2

DEV_TYPE というフィールドから、アクセス テーブル内のいくつかのレコードをカーソル検索しようとしています。各レコードを、以前にスクリプトで作成した既知の値のリストと比較したいと考えています。

(devcatList)

リストにない値を出力したい。レコードの値の一部も Null です。リストにない値のみを出力するように if ステートメントを設定したいのですが、Null 値に対して「なし」も出力したくありません。私のスクリプトは次のとおりです。

if field.name == "DEV_TYPE":
for iRow in arcpy.SearchCursor(fc):
      if not iRow.DEV_TYPE is None or iRow.DEV_TYPE not in devcatList:
          print str(iRow.OBJECTID) + " - " + str(iRow.DEV_TYPE)

if not x is None「 」から「 」をいじってみましたif x is not Noneor' ' を and ' ' に変更しましたand(直観に反していましたが) が、印刷結果はすべての値を返すか、値を返さないか、または ' None' のみを返します....基本的に、必要のないすべてのものです。ばかげたことをしているのは確かだ。誰かが私の愚かさを指摘できますか?

ありがとう、マイク

4

2 に答える 2

4

私はあなたが欲しいと思いますif iRow.DEV_TYPE is not None and iRow.DEV_TYPE not in devcatList:

于 2012-06-21T16:09:14.063 に答える
2

多分このようなもの:

if field.name == "DEV_TYPE":
    for iRow in arcpy.SearchCursor(fc):
       dev_type = iRow.DEV_TYPE
       if dev_type is not None and dev_type not in devcatList:
           print "{} - {}".format(iRow.OBJECTID, iRow.DEV_TYPE)

は、条件付きコンテキストでと同等であるため、if dev_type is not noneより便利に (正確性は劣​​りますが) 記述できます。また、ステートメントをより慣用的な方法で自由に書き直しました。if dev_typeNoneFalseprint

于 2012-06-21T16:05:36.453 に答える