Entfernen numerischer Zeichen aus alphanumerischen Werten in der Feldberechnung?

9

Ich habe ein Feld mit alphanumerischen Werten im folgenden Format:

A-AA00

Manchmal sind sie es auch

A-AAA0

Ich benötige ein Python-Skript, das ich in ArcMap 10 in den Feldrechner einfügen kann, um mindestens die numerischen Zeichen zu entfernen und die alphabetischen und den Bindestrich neu zu trainieren. So dass zum Beispiel dies:

A-AA0

wird dies:

A-AA

Ich möchte auch die numerischen Zeichen durch numerische Zeichen aus einem anderen Feld ersetzen. Dieser Stack Exchange- Eintrag behebt dieses Problem, aber die Zeichenfolge hat ein Leerzeichen vor der Nummer und kann zum Teilen und Indizieren verwendet werden. Meine Zeichenfolgen sind nicht so einfach aufgebaut.

ndthl
quelle

Antworten:

17

Ich würde reguläre Ausdrücke verwenden . Wenn Sie Folgendes in den Codeblockabschnitt des Rechners einfügen, wird eine Zeichenfolge zurückgegeben, bei der alle Ziffern entfernt wurden, unabhängig davon, wo sie sich befinden:

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

Dies kann dann aus dem Berechnungsfeld wie folgt aufgerufen werden:

strip_digits(!column_name!)

Wenn Sie Zeichen ersetzen möchten, fügen Sie der Funktion für die Ersatzzeichen ein weiteres Argument hinzu und setzen Sie es anstelle der leeren Zeichenfolge ein.

om_henners
quelle
4

benutze einfach streifen

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

Ich habe dies auch im Mapping Center (arcgis.com) gefunden.
Ressourcenmanagement-Tool für das Ressourcenzentrum

Es ist alter Code, der für 9.2 / 9.3 geschrieben wurde. Nicht sicher über die Eignung für 10.x Die Beschreibung lautet ...

  1. Stapelsuche und -ersetzung: Dieses Tool füllt Zeichenfolgen in einem Textfeld mit Ersatzzeichenfolgen, die in einer Tabelle zum Suchen / Ersetzen angegeben sind. Dies ist nützlich, um Beschriftungszeichenfolgen zu standardisieren oder Standardabkürzungen einzuführen und durchzusetzen.
  2. Text in korrekte Groß- und Kleinschreibung konvertieren: Dieses Tool konvertiert die Textzeichenfolgen in einem Feld (vermutlich alle Groß- oder Kleinbuchstaben) in eine korrekte Textzeichenfolge (gemischte Groß- und Kleinschreibung) in einem anderen (neuen) Feld. Dieses Tool wurde geschrieben, um gebräuchliche Abkürzungen wie NE für Nordosten zu verarbeiten, damit es nicht als Ne ausgegeben wird.
  3. Hwy-Nummern für Hwy-Schild-Beschriftungen extrahieren: Fügt den numerischen Teil eines Autobahnnamens einem anderen Textfeld hinzu.

Alle diese Tools sind in Python geschrieben und können geändert werden, um alle spezifischen Anforderungen zu erfüllen, die Sie haben.

Brad Nesom
quelle
3

Ich würde mit diesem einfachen Fall beginnen:

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

Von dort aus sollten einige der Codeblock-Beispiele für Python aus der ArcGIS 10-Hilfe Ihnen einen Vorsprung auf die Gesamtlösung verschaffen.

PolyGeo
quelle
1
Ich denke, das Problem dabei ist, dass es keine einfache Möglichkeit gibt, mit Nicht-0-Ziffern umzugehen. Deshalb sind reguläre Ausdrücke so nützlich, wie om_henners betonte.
nmpeterson