Tengo una tabla de geodatabase con un campo que estoy tratando de eliminar los caracteres de retorno (nueva línea). Encontré esta publicación ( ¿Cómo puedo eliminar (chomp) una nueva línea en Python? ) Sobre cómo hacerlo, sin embargo, no funciona dentro de la calculadora de campo. Aquí están los fragmentos de código que probé: tenga en cuenta que el carácter de retorno no está al final de la cadena .
!myField!.rstrip()
O
!myField!.rstrip('\n')
O
!myField!.rstrip('\r\n')
O
!myField!.replace('\n', '')
000539 error dado para esta opción:
Descripción El cálculo utilizado por la herramienta Calcular campo o Calcular valor no es válido. Este mensaje de error proporcionado enumerará el error específico de Python.
Solución Este código de error cubre varios errores de Python:
Error de ejemplo 1: excepciones. TypeError: no se pueden concatenar los objetos 'str' e 'int'. Lo anterior es un error específico de Python. El cálculo está intentando agregar o concatenar una cadena y un número.
Error de ejemplo 2: campo inválido forma @ distancia Lo anterior es un error al usar el objeto de geometría. El método de distancia no es un método válido del objeto de geometría.
Para problemas específicos de Python, consulte la ayuda externa de Python para obtener más información, o consulte la ayuda Calcular campo o Calcular valor para obtener más información sobre estas herramientas.
O
import os
def removeReturn(myField):
s = myField.rstrip(os.linesep)
return s
¿Alguna idea de cómo eliminar caracteres de retorno usando la calculadora de campo?
SyntaxError: EOL while scanning string literal
error?Respuestas:
Creo que esto es solo un error / limitación del analizador de Python con la herramienta Calculadora de campo / Calcular campo. Si se encuentra una nueva línea dentro del campo de texto, se
SyntaxError: EOL while scanning string literal
produce un sin importar lo que intente.Puedo reproducir el problema en 10.1 SP1 importando el siguiente archivo CSV en una geodatabase de archivos, agregando un campo y simplemente intentando copiar el
Text
campo en el nuevo campo usando la Calculadora de campo con el analizador Python y la expresión!Text!
.Intente cambiar al analizador VB, o use un
UpdateCursor
y evite la Calculadora de campo por completo.Este tema también se discute en los foros de ESRI, con las mismas conclusiones:
El único NIM relevante que pude encontrar fue este:
fuente
Hay dos posibles soluciones que he encontrado confiables. Por alguna razón, CartoPac permite a las personas poner un Retorno en el campo OBSERVACIONES donde trabajo. Para deshacerme de ellos, la solución que he encontrado que funciona mejor es usar la Calculadora de campo.
Cambia tu analizador a Python. Ponga lo siguiente en Pre-Logic Script Code:
Ponga lo siguiente en el siguiente cuadro de texto (este está trabajando en un campo llamado OBSERVACIONES):
Cuando se retiren los retornos de carro, agregará un espacio, -, y un espacio entre cada línea. Puede modificar "-" a un carácter diferente o un conjunto de caracteres si lo desea. Pero he encontrado que esto funciona mejor para mí en función de la forma en que mis equipos de construcción ingresan datos. Es más fácil hacer operaciones de Buscar / Reemplazar si hay patrones de caracteres reconocibles que rompen cada retorno de carro, que usan en el campo para denotar un nuevo atributo (aunque a menudo es un atributo que podrían haber colocado en el campo apropiado) y me salvó el dolor de cabeza en primer lugar).
Si prefiere usar la Consola Python en ArcGIS, puede modificar lo anterior para que funcione. Sin embargo, también he intentado esto con cierto éxito en la consola de Python:
Reemplace "Assets \ Welds" con el nombre de fc apropiado y reemplace row.REMARKS con row. (Inserte el nombre del campo aquí)
Puede que necesite o no ejecutar las líneas de importación a continuación antes de intentar el ejemplo de código anterior:
fuente
La solución para esto ya que mi tabla de clase de entidad se originó en Excel fue usar el siguiente comando de Excel:
Método para eliminar todos los caracteres de línea de retorno o nuevos. Luego puede unir o importar la tabla a su base de datos SIG.
fuente
He usado una instrucción SQL para seleccionar primero los nuevos caracteres de línea. En la
Select By Attributes
ventana de diálogo:Tienes que presionar
Enter
después del primer%.fuente
MY_FIELD.strip()
trabajar, pero como solo tenía 5 registros, los edité manualmente.!MY_FIELD![:-1]
: el corte de cadena debe eliminar el carácter de nueva línea (suponiendo que no haya nada después de la nueva línea, que parece ser el caso para el OP) .!FieldName!.replace(chr(10), "").replace(chr(13), "")
La calculadora de campo está un poco confundida cuando se trata de secuencias de escape como
\n
y\t
. Solo usa los códigos de caracteres sin procesar.fuente
SyntaxError: EOL while scanning string literal
con esto. El analizador VB funciona bien.fuente
Creo que esto debería funcionar como código de script prelógico en la calculadora de campo, pero desafortunadamente parece que no. Lo publiqué de todos modos en caso de que le brinde un enfoque alternativo que pueda modificar para comenzar a trabajar.
fuente
Intente ajustar su
!field!
declaración en la expresión con comillas y un inicializador de cadena sin formato, por ejemplor"!field!"
.Inténtalo
str(!field!)
también.fuente
MYFIELD.replace(r"\n",""), but it doesn't see that I've escaped the newline character, it just fails with a
error EOL`.