Видалення числових символів з буквено-цифрового значення при обчисленні поля?


9

У мене є поле, що містить буквено-цифрові значення у такому форматі:

A-AA00

Іноді вони теж є

A-AAA0

Мені потрібен сценарій Python, який я можу помістити в польовий калькулятор в ArcMap 10, який принаймні видалить числові символи та перенавчає алфавітні та дефісні символи. Так що, наприклад, це:

A-AA0

стає таким:

A-AA

Я також хочу замінити числові символи числовими символами з іншого поля. Цей запис Stack Exchange вирішує цю проблему, але рядок має пробіл перед числом, і це можна використовувати для розбиття та індексації ... мої рядки не так зручно побудовані.

Відповіді:


17

Я б використовував регулярні вирази . Якщо ви помістите наступне в розділ блоку коду калькулятора, він поверне рядок, у якої всі цифри позбавлені, незалежно від того, чи були вони:

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

Потім це можна назвати з поля обчислення як:

strip_digits(!column_name!)

Якщо ви хочете замінити символи, додайте ще один аргумент до функції для символів, що заміняються, і поставте їх замість порожнього рядка.



4

Я також знайшов це в центрі картографування (arcgis.com).
інструмент управління текстовим центром ресурсів

Це старий код, написаний для 9.2 / 9.3. Не впевнений у відповідності для 10.x Опис читає ...

  1. Пакетна пошук і заміна: Цей інструмент заповнює рядки в текстовому полі за допомогою рядків заміни, зазначених у таблиці Знайти / Замінити. Це корисно для стандартизації рядків міток або введення та застосування стандартних абревіатур.
  2. Перетворити текст у власний регістр: Цей інструмент перетворює текстові рядки в одному полі (імовірно, що це все верхнє або все нижнє регістр) у відповідний текстовий рядок (змішаний верхній і нижній регістр) у інше (нове) поле. Цей інструмент написаний для обробки загальних скорочень, таких як NE для північного сходу, щоб він не вийшов як Ne.
  3. Витяг номери Hwy для міток Hwy Shield: додає числову частину назви шосе до іншого текстового поля.

Усі ці інструменти написані на Python і можуть бути змінені для задоволення будь-яких конкретних потреб.


3

Я б почав із цього простого випадку:

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

Звідси деякі приклади блокування коду для Python з довідки ArcGIS 10 повинні дати вам голову для загального рішення.


1
Я думаю, що проблема в цьому полягає в тому, що не існує простого способу обробляти цифри без 0. Ось чому регулярні вирази настільки корисні, як зазначали om_henners.
nmpeterson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.