Rimozione di caratteri numerici dal valore alfanumerico nel calcolo del campo?


9

Ho un campo contenente valori alfanumerici nel seguente formato:

A-AA00

A volte lo sono anche

A-AAA0

Ho bisogno di uno script Python che posso inserire nel calcolatore di campo in ArcMap 10 che rimuoverà almeno i caratteri numerici e riqualificherà quelli alfabetici e il trattino. In modo che, ad esempio, questo:

A-AA0

diventa questo:

A-AA

Voglio anche sostituire i caratteri numerici con caratteri numerici da un altro campo. Questa voce di Stack Stack risolve questo problema, ma la stringa ha uno spazio prima del numero e questo può essere usato per dividere e indicizzare ... le mie stringhe non sono costruite così facilmente.

Risposte:


17

Vorrei usare espressioni regolari . Se si inserisce quanto segue nella sezione del blocco di codice della calcolatrice, verrà restituita una stringa con tutte le cifre eliminate, indipendentemente dal fatto che siano:

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

Questo può quindi essere chiamato dalla casella di calcolo come:

strip_digits(!column_name!)

Se si desidera sostituire i caratteri, aggiungere un altro argomento alla funzione per i caratteri sostitutivi e metterlo al posto della stringa vuota.


4

basta usare la striscia

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

4

Ho anche trovato questo nel centro di mappatura (arcgis.com).
strumento di gestione del testo del centro risorse

È un vecchio codice scritto per 9.2 / 9.3. Non sono sicuro dell'adeguatezza per 10.x La descrizione dice ...

  1. Trova e sostituisci in batch: questo strumento popola le stringhe in un campo di testo con le stringhe di sostituzione specificate in una tabella Trova / Sostituisci. Ciò è utile per standardizzare le stringhe di etichette o introdurre e applicare abbreviazioni standard.
  2. Converti testo in maiuscolo corretto: questo strumento converte le stringhe di testo in un campo (si presume siano tutte maiuscole o minuscole) in una stringa di testo maiuscola (mista maiuscola e minuscola) in un altro (nuovo) campo. Questo strumento è stato scritto per gestire abbreviazioni comuni come NE per nord-est, in modo che non esca come Ne.
  3. Estrai numeri Hwy per etichette Hwy Shield: aggiunge la parte numerica del nome di una strada ad un altro campo di testo.

Tutti questi strumenti sono scritti in Python e possono essere modificati per soddisfare qualsiasi specifica esigenza.


3

Vorrei iniziare con questo semplice caso:

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

Da lì alcuni degli esempi di blocco del codice per Python della Guida di ArcGIS 10 dovrebbero fornire un vantaggio sulla soluzione totale.


1
Penso che il problema sia che non esiste un modo semplice per gestire cifre diverse da 0. Ecco perché le espressioni regolari sono così utili, come sottolineato da om_henners.
nmpeterson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.