Español

Error: El objeto 'NoneType' no tiene el atributo 'replace'

Mensaje de error

Al intentar utilizar la función replace() en un script de Python en un campo de cadena de caracteres, se produce un fallo y aparece el siguiente error:

Error: El objeto 'NoneType' no tiene el atributo 'replace'
Error message

Causa

El error se produce cuando hay valores nulos en el campo seleccionado. La siguiente imagen muestra una tabla de atributos con un campo que contiene valores nulos.

Attribute table with Null values

La siguiente muestra de código presenta cómo se puede reproducir el error:
import arcpy

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

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

 

Solución o solución alternativa

Utilice la cláusula de selección para evitar la ejecución de la función replace() en los valores nulos del campo. La siguiente muestra de código presenta cómo hacerlo:

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

 

Información relacionada