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


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: Добавляет числовую часть названия шоссе в другое текстовое поле.

Все эти инструменты написаны на Python и могут быть изменены для удовлетворения любых ваших конкретных потребностей.


3

Я бы начал с этого простого случая:

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

Отсюда некоторые примеры кодовых блоков для Python из справки ArcGIS 10 должны дать вам общее представление о полном решении.


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