Alan hesaplamasında sayısal karakterler alfasayısal değerden kaldırılsın mı?


9

Aşağıdaki biçimde alfasayısal değerler içeren bir alanım var:

A-AA00

Bazen onlar da

A-AAA0

En azından sayısal karakterleri kaldıracak ve alfabetik olanları ve kısa çizgiyi yeniden eğitecek olan ArcMap 10'daki alan hesaplayıcısına koyabileceğim bir Python betiğine ihtiyacım var. Böylece, örneğin, bu:

A-AA0

bu olur:

A-AA

Sayısal karakterleri başka bir alandaki sayısal karakterlerle değiştirmek istiyorum. Bu Stack Exchange girdisi bu sorunu giderir, ancak dize sayıdan önce bir boşluk vardır ve bu bölme ve dizine ekleme için kullanılabilir ... Dizelerim çok kullanışlı değil.

Yanıtlar:


17

Düzenli ifadeler kullanırdım . Hesap makinesinin kod bloğu bölümüne aşağıdakileri koyarsanız, ne olursa olsun tüm basamakları soyulmuş bir dize döndürür:

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

Bu daha sonra hesaplama kutusundan şu şekilde çağrılabilir:

strip_digits(!column_name!)

Karakterleri değiştirmek istiyorsanız, değiştirilen karakterlerin işlevine başka bir bağımsız değişken ekleyin ve boş dizenin yerine koyun.


4

sadece şerit kullan

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

4

Bunu haritalama merkezinde de buldum (arcgis.com).
kaynaklar merkezi metin yönetim aracı

9.2 / 9.3 için yazılmış eski bir koddur. 10.x için uygunluk hakkında emin değilim Açıklama okur ...

  1. Toplu Bul ve Değiştir: Bu araç, bir metin alanındaki dizeleri Bul / Değiştir tablosunda belirtilen yedek dizelerle doldurur. Bu etiket dizelerini standartlaştırmak veya standart kısaltmaları tanıtmak ve uygulamak için kullanışlıdır.
  2. Metni Doğru Harfe Dönüştür: Bu araç, bir alandaki (tümü büyük veya tümü küçük harf olduğu varsayılır) metin dizelerini başka bir (yeni) alanda uygun bir duruma (karışık büyük ve küçük harf) metin dizesine dönüştürür. Bu araç kuzeydoğu için NE gibi yaygın kısaltmaları işlemek için yazılmıştır, böylece Ne olarak çıkmayacaktır.
  3. Hwy Kalkan Etiketleri için Hwy Numaralarını Ayıkla: Otoyol adının sayısal kısmını başka bir metin alanına ekler.

Tüm bu araçlar Python ile yazılmıştır ve sahip olduğunuz özel ihtiyaçları karşılamak için değiştirilebilir.


3

Bu basit dava ile başlayacağım:

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

Oradan ArcGIS 10 Yardımından Python için bazı kod bloğu örnekleri , toplam çözüme bir başlangıç ​​yapmalıdır.


1
Sanırım buradaki sorun, 0 olmayan rakamları işlemenin kolay bir yolu olmamasıdır. Bu yüzden om_henners'ın işaret ettiği gibi düzenli ifadeler çok faydalıdır.
nmpeterson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.