У меня есть данные атрибута с именами владельцев. Мне нужно выбрать данные, которые содержат фамилию дважды .
Например, у меня может быть имя владельца, которое гласит « BENNETT MCCARL & ARNETTE BENNETT ».
Я хотел бы выбрать любые строки в таблице атрибутов, которые имеют повторяющуюся фамилию, как в примере выше. Кто-нибудь знает, как я могу выбрать эти данные?
Ответы:
Выражение калькулятора поля на основе этого ответа
«================================================= знак равно
Он вернет максимальное количество одинаковых слов в строке
источник
Для этого вы можете использовать модуль коллекций Python и курсор обновления. Этот метод добавляет новое поле и заполняет его,
1
если есть дубликаты, в противном случае,0
если нет дубликатов.источник
Как насчет использования
re
иset
и установки флага (здесь 0 и 1) в pythonre
- извлечет все имена (последнее и первое)BENNETT MCCARL & ARNETTE BENNETT
извне&
. Для сопоставления с образцомre
имеет наивысший приоритет - вы можете использовать,re
как вы хотите.И позвонить
sorter( !N! )
** Посмотрите, как
regex
хватается за слова наLIVE DEMOОбратите внимание, что все эти ответы решают проблему, предполагая, что ваши данные очищены, то есть имеют надлежащее пространство между словами, но что, если ваши данные будут чем-то вроде
BENNETTMCCARL&ARNETTEBENNETT
этого, все это потерпит неудачу. В этом случае вам может понадобиться использовать алгоритм Suffix Tree , и, к счастью, у python есть библиотека, как здесь .источник
Предполагая, что ваши исходные данные - это FeatureClass / Table в файловой базе геоданных, тогда следующий запрос выберет нужные вам строки:
name
это поле, я просто назвал егоname
. Первая часть тестирует левую часть, вторая часть тестирует правую. Этот запрос, очевидно, жестко запрограммирован для поиска BENNETT. Если вам нужно выбрать другие фамилии, надеюсь, вы сможете решить, что нужно изменить?источник