日本語

エラー: 'NoneType’ オブジェクトに属性 'replace' がありません。

エラー メッセージ

文字列フィールドの Python スクリプトで replace() 関数を使用しようとすると失敗し、次のエラーが返されます。

エラー: 'NoneType’ オブジェクトに属性 'replace' がありません。
Error message

原因

このエラーは、選択されたフィールドに Null 値がある場合に発生します。 次の図に、Null 値を含むフィールドがある属性テーブルを示します。

Attribute table with Null values

次のコード サンプルでは、エラーの再現方法を示します。
import arcpy

cursor = arcpy.da.UpdateCursor ("[Feature]", "[Field Name]"

for row in cursor:
        row[0] = row[0].replace("%20", " ")
 cursor.updateRow(row)

 

解決策または対処法

選択句を使用し、フィールドの Null 値で replace() 関数を実行しないようにします。 その手順を、以下のコード サンプルに示します。

import arcpy

cursor = arcpy.da.UpdateCursor("[Feature]", "[Field Name]")

for row in cursor:
        if row[0] == None:
                row[0] = row[0]

 else:
                row[0] = row[0].replace("%20", " ")

        cursor.updateRow (row)
Python script

 

関連情報