필드 계산에서 영숫자 값에서 숫자를 제거 하시겠습니까?


9

다음 형식의 영숫자 값을 포함하는 필드가 있습니다.

A-AA00

때때로 그들은 또한

A-AAA0

최소한 숫자를 제거하고 알파벳과 하이픈을 재교육하는 ArcMap 10의 필드 계산기에 넣을 수있는 Python 스크립트가 필요합니다. 예를 들어 다음과 같습니다.

A-AA0

이된다 :

A-AA

또한 숫자 문자를 다른 필드의 숫자 문자로 바꾸고 싶습니다. 이 스택 교환 항목은이 문제를 해결하지만 문자열 앞에 숫자가 있기 때문에 분할 및 인덱싱에 사용할 수 있습니다.

답변:


17

정규식 을 사용 합니다 . 계산기의 코드 블록 섹션에 다음을 넣으면 모든 숫자가 제거 된 문자열을 반환합니다.

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

그런 다음 계산 상자에서 다음과 같이 호출 할 수 있습니다.

strip_digits(!column_name!)

문자를 바꾸려면 대체 문자의 함수에 다른 인수를 추가하여 빈 문자열 대신 넣으십시오.


4

그냥 스트립을 사용하십시오

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

4

나는 또한 매핑 센터 (arcgis.com)에서 이것을 발견했다.
리소스 센터 텍스트 관리 도구

9.2 / 9.3 용으로 작성된 오래된 코드입니다. 10.x의 적합성에 대해 잘 모르겠습니다.

  1. 배치 찾기 및 바꾸기 :이 도구는 텍스트 필드의 문자열을 찾기 / 바꾸기 테이블에 지정된 대체 문자열로 채 웁니다. 이는 레이블 문자열을 표준화하거나 표준 약어를 도입하고 시행하는 데 유용합니다.
  2. 텍스트를 적절한 대소 문자로 변환 :이 도구는 한 필드의 텍스트 문자열 (모두 대문자 또는 모두 소문자로 간주 됨)을 다른 (새) 필드의 적절한 대소 문자 (대소 문자 혼합) 텍스트 문자열로 변환합니다. 이 도구는 북동쪽의 NE와 같은 일반적인 약어를 처리하기 위해 작성되었으므로 Ne로 나오지 않습니다.
  3. Hwy Shield 레이블의 Hwy 번호 추출 : 고속도로 이름의 숫자 부분을 다른 텍스트 필드에 추가합니다.

이 모든 도구는 Python으로 작성되었으며 특정 요구 사항을 충족하도록 수정할 수 있습니다.


3

이 간단한 경우부터 시작하겠습니다.

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

거기 에서 ArcGIS 10 Help의 Python 용 코드 블록 예제 중 일부 는 전체 솔루션에 대한 출발점이 될 것입니다.


1
문제는 0이 아닌 숫자를 쉽게 처리 할 수 ​​없다는 것입니다. om_henners가 지적했듯이 정규 표현식이 그렇게 유용한 이유입니다.
nmpeterson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.