6 votos

¿Cómo se comprueba un campo de cadena NULL en la calculadora de campos con Python?

Estoy intentando realizar una operación sobre un campo de cadena con la condición de que contenga datos. Haciendo referencia a None con Python no parece funcionar cuando el campo es anulable y contiene <Null> para sus datos. ¿Me falta algo? He probado len() y "<Null>" y "Null" también. ¿Qué es lo que hace?

El código, por si acaso:

def apt(addr,aptnum):
    if aptnum != None:
        a = addr.split(aptnum,1)[-1]
        return a
    else:
        return addr 

Actualización: Parece que mi problema es que los cálculos de los campos no se procesan en ninguna de las filas en las que hay un null se comprueba la columna. Sin embargo, esto está fuera del alcance de esta pregunta, así que lo dejaré por el momento.

6voto

No sé lo que estás consultando (por ejemplo, shapefile, geodatabase), pero echa un vistazo a http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00s50000002t000000.htm específicamente la sección "La palabra clave NULL"

EDITAR Añadiendo un campo a un shapefile, usando la calculadora de campos en este campo, y luego usando lo siguiente como bloque de código (parser de Python)

def TestForNull(a_field):
  if not a_field:
   return "is null"

con TestForNull(!SuNombreDeCampoAquí!) en la línea de expresión, el resultado es que se añade "is null" al campo. Por supuesto, tendrá que modificarlo para adaptarlo a sus necesidades.

3voto

auramo Puntos 161

Intenta sólo

if aptnum:

Esto comprueba tanto las cadenas nulas como las de longitud cero.

1voto

mleykamp Puntos 491

O puede utilizar if aptnum is None:

1voto

Mark Maslar Puntos 640

Esta respuesta de PolyGeo me ha servido: https://gis.stackexchange.com/a/81155/44980

.strip() elimina todos los caracteres de los espacios en blanco

def TestForNull(Field1):
  if Field1.strip() == "":
    return 'is null'
  else:
    return 'not null'

0voto

Nick Puntos 583

Prueba a llamar al bloque de código como apt(!addr!,str(!aptnum!)).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X