¿Eliminar caracteres numéricos del valor alfanumérico en el cálculo de campo?

9

Tengo un campo que contiene valores alfanuméricos en el siguiente formato:

A-AA00

A veces también son

A-AAA0

Necesito un script de Python que pueda poner en la calculadora de campo en ArcMap 10 que al menos eliminará los caracteres numéricos y volverá a formar los alfabéticos y el guión. Para que, por ejemplo, esto:

A-AA0

se convierte en esto:

A-AA

También quiero reemplazar los caracteres numéricos con caracteres numéricos de otro campo. Esta entrada de Stack Exchange aborda este problema, pero la cadena tiene un espacio antes del número y esto se puede usar para dividir e indexar ... mis cadenas no están tan bien construidas.

ndthl
fuente

Respuestas:

17

Me gustaría utilizar expresiones regulares . Si coloca lo siguiente en la sección de bloque de código de la calculadora, devolverá una cadena que tiene todos los dígitos eliminados, sin importar si son:

import re
def strip_digits(s):
    return re.sub("\d+", "", s)

Esto se puede llamar desde el cuadro de cálculo como:

strip_digits(!column_name!)

Si desea reemplazar caracteres, agregue otro argumento a la función para los caracteres de reemplazo y colóquelo en lugar de la cadena vacía.

om_henners
fuente
4

solo usa strip

s="AAAA-000"
print s.strip("0, 1,2,3,etc")
AAAA-
Peludo
fuente
4

También encontré esto en el centro de mapeo (arcgis.com).
herramienta de gestión de texto del centro de recursos

Es un código antiguo escrito para 9.2 / 9.3. No estoy seguro acerca de la idoneidad para 10.x La descripción dice ...

  1. Búsqueda y reemplazo por lotes: esta herramienta llena cadenas en un campo de texto con cadenas de reemplazo que se especifican en una tabla Buscar / Reemplazar. Esto es útil para estandarizar cadenas de etiquetas o para introducir y aplicar abreviaturas estándar.
  2. Convertir texto a mayúsculas: esta herramienta convierte las cadenas de texto en un campo (se presume que son mayúsculas o minúsculas) a una cadena de texto en mayúsculas (mayúsculas y minúsculas) en otro campo (nuevo). Esta herramienta está escrita para manejar abreviaturas comunes como NE para el noreste, para que no salga como Ne.
  3. Extraer números de carretera para etiquetas de escudo de carretera: agrega la parte numérica del nombre de una carretera a otro campo de texto.

Todas estas herramientas están escritas en Python y se pueden modificar para cumplir con las necesidades específicas que tenga.

Brad Nesom
fuente
3

Comenzaría con este simple caso:

>>> x = "A-AA00"
>>> print x
A-AA00
>>> print x.replace("0","")
A-AA
>>> 

A partir de ahí, algunos de los ejemplos de bloque de código para Python de la Ayuda de ArcGIS 10 deberían darle un comienzo a la solución total.

PolyGeo
fuente
1
Creo que el problema con esto es que no hay una manera fácil de manejar dígitos que no sean 0. Es por eso que las expresiones regulares son tan útiles, como señaló om_henners.
nmpeterson el