Czy usuwasz znaki numeryczne z wartości alfanumerycznych w obliczeniach pól?

9

Mam pole zawierające wartości alfanumeryczne w następującym formacie:

A-AA00

Czasami też są

A-AAA0

Potrzebuję skryptu w języku Python, który mogę umieścić w kalkulatorze polowym w ArcMap 10, który przynajmniej usunie znaki numeryczne i przekwalifikuje znaki alfabetyczne oraz łącznik. Tak więc na przykład:

A-AA0

staje się to:

A-AA

Chcę również zastąpić znaki numeryczne znakami numerycznymi z innego pola. Ten wpis wymiany stosu rozwiązuje ten problem, ale ciąg ma spację przed liczbą i można go użyć do podziału i indeksowania ... moje ciągi nie są tak łatwo skonstruowane.

ndthl
źródło

Odpowiedzi:

17

Chciałbym użyć wyrażeń regularnych . Jeśli umieścisz następujące elementy w sekcji bloku kodu kalkulatora, zwróci ciąg, w którym wszystkie cyfry zostały usunięte, bez względu na to, gdzie są:

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

Można to następnie wywołać z pola obliczeń jako:

strip_digits(!column_name!)

Jeśli chcesz zamienić znaki, dodaj kolejny argument do funkcji zastępujących znaki i umieść go w miejscu pustego ciągu.

om_henners
źródło
4

po prostu użyj paska

s="AAAA-000"
print s.strip("0, 1,2,3,etc")
AAAA-
Włochaty
źródło
4

Znalazłem to również w centrum mapowania (arcgis.com).
narzędzie do zarządzania tekstem w centrum zasobów

Jest to stary kod napisany dla wersji 9.2 / 9.3. Nie jestem pewien co do stosowności dla 10.x Opis brzmi ...

  1. Partia Znajdź i zamień: To narzędzie wypełnia ciągi w polu tekstowym ciągami zastępującymi określonymi w tabeli Znajdź / zamień. Jest to przydatne do standaryzacji ciągów etykiet lub wprowadzania i egzekwowania standardowych skrótów.
  2. Konwertuj tekst na odpowiednią literę: To narzędzie konwertuje ciągi tekstowe w jednym polu (zakładając, że są to wielkie lub wszystkie małe litery) na odpowiedni ciąg tekstowy (mieszane wielkie i małe litery) w innym (nowym) polu. To narzędzie jest napisane do obsługi typowych skrótów, takich jak NE dla północno-wschodniej, aby nie wyszło jako Ne.
  3. Wyodrębnij numery Hwy dla etykiet osłony Hwy: Dodaje część numeryczną nazwy autostrady do innego pola tekstowego.

Wszystkie te narzędzia są napisane w języku Python i można je modyfikować, aby spełnić określone potrzeby.

Brad Nesom
źródło
3

Zacznę od tego prostego przypadku:

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

Stamtąd niektóre przykłady bloków kodu dla Pythona z pomocy ArcGIS 10 powinny dać ci przewagę nad kompletnym rozwiązaniem.

PolyGeo
źródło
1
Myślę, że problem polega na tym, że nie ma łatwego sposobu na obsługę cyfr innych niż 0. Właśnie dlatego wyrażenia regularne są tak przydatne, jak wskazał om_henners.
nmpeterson