Ich habe Attributdaten mit Eigentümernamen. Ich muss zweimal Daten auswählen , die den Nachnamen enthalten .
Zum Beispiel kann ich einen Eigentümernamen haben, der " BENNETT MCCARL & ARNETTE BENNETT " lautet .
Ich möchte alle Zeilen in der Attributtabelle auswählen, die einen wiederkehrenden Nachnamen haben, wie im obigen Beispiel. Weiß jemand, wie ich diese Daten auswählen kann?
Antworten:
Feldrechnerausdruck basierend auf dieser Antwort
'================================================ =
Es wird die maximale Anzahl derselben Wörter in der Zeichenfolge zurückgegeben
quelle
Sie können dazu das Python- Sammlungsmodul und einen Update-Cursor verwenden. Diese Methode fügt ein neues Feld hinzu und füllt es mit einem,
1
wenn Duplikate vorhanden sind, andernfalls einem,0
wenn keine Duplikate vorhanden sind.quelle
Was über die Verwendung
re
undset
und Setzen eines Flags (hier 0 und 1) in pythonre
alle Namen extrahieren (letzte und erste) vonBENNETT MCCARL & ARNETTE BENNETT
ohne&
. Der Mustervergleichre
hat höchste Priorität - Sie können verwenden,re
wie Sie möchten.Und Ruf an
sorter( !N! )
** Sehen Sie, wie
regex
Wörter auf greiftLIVE DEMOBeachten Sie, dass alle diese Antworten das Problem lösen, vorausgesetzt, Ihre Daten werden bereinigt, dh zwischen den Wörtern befindet sich ein angemessener Abstand. Was wäre, wenn Ihre Daten so etwas wie
BENNETTMCCARL&ARNETTEBENNETT
diese sind, würden alle diese fehlschlagen. In diesem Fall müssen Sie möglicherweise den Suffix Tree- Algorithmus verwenden, und zum Glück verfügt Python über eine Bibliothek wie hier .quelle
Angenommen, Ihre Quelldaten sind eine FeatureClass / Tabelle in einer Datei-GeoDatabase, dann wählt die folgende Abfrage die gewünschten Zeilen aus:
name
ist das Feld, ich habe es gerade genanntname
. Der erste Teil testet die linke Seite, der zweite Teil testet die rechte. Diese Abfrage ist offensichtlich schwer codiert, um nach BENNETT zu suchen. Wenn Sie andere Nachnamen auswählen müssen, können Sie hoffentlich herausfinden, was geändert werden muss.quelle