cl.geologyidea.com
Más

Error de sintaxis de Python 000989 al ejecutar Python Snippet de geoproceso exitoso?

Error de sintaxis de Python 000989 al ejecutar Python Snippet de geoproceso exitoso?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Tengo un problema con un simple fragmento de Python.

Aquí está el trasfondo: quería incluir un paso adicional en una secuencia de comandos de actualización nocturna que reemplaza los caracteres en un campo que simplemente no funcionan bien con una aplicación web que permite a los usuarios consultar los datos. Estos caracteres incluían corchetes angulares ("<" y ">") que estaba tratando de reemplazar con "Menor que" y "Mayor que".

Entonces, cuando estaba probando el Cálculo de campo, finalmente logré que funcionara de la manera que quería, y como lo he hecho con tantos otros fragmentos, simplemente copié el fragmento de Python del geoproceso y lo pegué en mi secuencia de comandos.

A continuación se muestra el fragmento:

arcpy.CalculateField_management ("ruta / a / mi / capa", "campo", "RemoveBad (! field!)", "PYTHON_9.3", "def RemoveBad (x): / nx = x.replace (" < =  ", " Menor o igual a  ") / nx = x.replace ("> =  ", " Mayor o igual a  ") / nx = x.replace (" < " ,  "Menor que ") / nx = x.replace ( "> ",  "Mayor que ") / nx = x.replace ( "= ",  "Igual a ") / nx = x.strip () / n return x ")

Ahora, en mi secuencia de comandos, tengo un registro que informa errores de geoprocesamiento, por lo que cuando ejecuto la secuencia de comandos, obtengo lo siguiente:

Ejecutando: CalculateField ruta  to  my  layer field RemoveBad (! Field!) PYTHON_9.3 "def RemoveBad (x): / nx = x.replace ('<=', 'Menor o igual a') / nx = x.replace ('> =', 'Mayor o igual que') / nx = x.replace ('<', 'Menor que') / nx = x.replace ('>', 'Mayor que') / nx = x.replace ('=', 'Equal To') / nx = x.strip () / n return x "Hora de inicio: lunes 25 de agosto 09:35:32 2014 No se pudo ejecutar. Los parámetros no son válidos. ERROR 000989: Error de sintaxis de Python: Error de análisis Error de sintaxis: sintaxis no válida (línea 1) No se pudo ejecutar (CalculateField). Falló el lunes 25 de agosto a las 09:35:32 de 2014 (tiempo transcurrido: 0,00 segundos)

Así que comencé a revisar el guión, pero no puedo encontrar el problema, lo que me lleva a creer que tiene algo que ver con los corchetes angulares.

Para reiterar, este fragmento de Python es de un geoproceso exitoso de Calculadora de campo.


Según los comentarios de Alex, creé la siguiente variable:

RemoveBad = "" "def RemoveBad (x): x = x.replace (" <=  ", " Menor o igual a  ") x = x.replace ("> =  ", " Mayor Que o igual a  ") x = x.replace (" < ", " Menor que  ") x = x.replace (">  ", " Mayor que  ") x = x.replace ( "= ",  "Igual a ") x = x.strip () return x "" "

Luego actualicé el fragmento:

arcpy.CalculateField_management ("ruta / a / mi / capa", "campo", "RemoveBad (! campo!)", "PYTHON_9.3", RemoveBad)

El error desapareció y el script funciona como se esperaba.


Intente ajustar su código, su/nortedebiera ser orte:

arcpy.CalculateField_management ("ruta / a / mi / capa", "campo", "RemoveBad (! field!)", "PYTHON_9.3", "def RemoveBad (x):  nx = x.replace (" < =  ", " Menor o igual a  ")  nx = x.replace ("> =  ", " Mayor o igual a  ")  nx = x.replace (" < " ,  "Menor que ")  nx = x.replace ( "> ",  "Mayor que ")  nx = x.replace ( "= ",  "Igual a ")  nx = x.strip ()  n return x ")

O mejor aún, coloque su bloque de código en una cadena entre comillas triples para que pueda leerlo (y no necesita escapar de sus comillas):

arcpy.CalculateField_management ("ruta / a / mi / capa", "campo", "RemoveBad (! field!)", "PYTHON_9.3", "" "def RemoveBad (x): x = x.replace (" < = "," Menor o igual a ") x = x.replace ("> = "," Mayor o igual a ") x = x.replace (" <"," Menor que ") x = x.replace (">", "Mayor que") x = x.replace ("=", "Igual a") x = x.strip () return x "" ")

y si prefieres hacerlo como cursor:

def fixvalue (val): return (val.replace ("<=", "Menor o igual a") .replace ("> =", "Mayor o igual a") .replace ("<", "Menos Que ") .replace ("> "," Mayor que ") .replace (" = "," Igual a ") .strip ()) con arcpy.da.UpdateCursor ('ruta / a / mi / capa'," campo ") como cur: para la fila en cur: fila [0] = valor fijo (fila [0]) cur.updateRow (fila)

Ver el vídeo: Python SyntaxError invalid syntax


Comentarios:

  1. Mezahn

    En mi opinión, estás equivocado. Puedo defender mi posición. Envíeme un correo electrónico a PM, hablaremos.

  2. Gualterio

    Me parece una frase brillante es

  3. Takis

    No es sentido.

  4. Heathcliff

    Sí, en serio. Estoy de acuerdo con todo lo mencionado anteriormente. Podemos comunicarnos sobre este tema.

  5. Mazuzuru

    ¿Cómo puedo yo saber?

  6. Faell

    En mi opinión se equivoca. Puedo defender la posición. Escríbeme por PM, nos comunicamos.

  7. Abrecan

    valiente, el excelente mensaje



Escribe un mensaje