Ich muss unsere Paketdaten massieren, damit sie von einem Programm in Sheriff-Hubschraubern verwendet werden können. Das Programm benötigt eines der folgenden Adressformate in den Feldern:
Unsere Adressen befinden sich derzeit in einem Bereich: Beispiel: 1234 W Main St.
Gibt es eine Möglichkeit, die Aufteilung der Felder in eines dieser gewünschten Formate zu automatisieren?
Ich kann mir vorstellen, dass das Zwei-Feld-Format einfacher wäre, wenn nur eine Aufteilung nach den Nummern erforderlich wäre, aber auch ein Problem für Straßen wie 1st Ave usw. verursachen könnte.
Antworten:
Anstatt mehrere RegExes zum Parsen von Adressen zu verwenden, verwenden Sie einfach das sofort einsatzbereite Tool von Esri, das für diese Aufgabe entwickelt wurde: Adressen standardisieren . Es ist auf allen Lizenzstufen verfügbar und ich habe positive Erfahrungen damit gemacht.
quelle
Sie können dies im Feldrechner mit Python erreichen. Dies ist vielleicht nicht die eleganteste, aber es ist ein Anfang, vorausgesetzt der einfachste Fall (dh Ihre Adressen sehen alle gleich aus). Ich würde zuerst die zusätzlichen Felder erstellen, die benötigt werden. Angenommen, Ihre Spalte mit der vollständigen Adresse heißt "Adresse".
Für HOUSENO im Feldrechner schreiben Sie:
Dies kann dann aus dem Berechnungsfeld wie folgt aufgerufen werden:
Für Ihren Straßennamen:
Codeblock:
Für die Richtung unter der Annahme, dass es jedes Mal das erste Zeichen ist:
Codeblock:
Hier ist die Python-Ressource für re . Diese 7.1-Fallstudie: Straßenadressen hat mir mehrfach dabei geholfen, meine Straßen- / Adressdatenbank auch mit Python- und Re-Modulen zu sortieren. Dies sollte Ihnen helfen, von hier aus, wenn Sie keine Ergebnisse erhalten, möchten Sie einen Kommentar und ich kann meinen Code ändern
quelle
Wie Erica sagte, ist Ihr zweites Format einfach. Wenn alle Ihre Straßennamen ein Wort wären, könnten Sie die Länge der Liste überprüfen, nachdem Sie das ursprüngliche Feld aufgeteilt haben. Länge 3 = kein Präfix, Länge 4 = hat ein Präfix (auch unter der Annahme, dass SUFTYPE immer ausgefüllt ist). Dies schlägt fehl, wenn eine Straße mehr als ein Wort enthält, z. B. "Grand River". Sie können überprüfen, ob das zweite Element mit einer Liste zulässiger Präfixe übereinstimmt, und von dort aus fortfahren. Sie müssten dies testen, um festzustellen, ob es mit Ihren Daten funktioniert.
quelle
Stellen Sie sicher, dass Ihre Eingabe im Zeichenfolgenformat vorliegt, und verwenden Sie einfach die Funktion string.split (), die auf Leerzeichen aufgeteilt wird und eine Liste zurückgibt. (zB "1234 W Main St." würde zurückgeben ["1234", "W", "Main", "St."])
Von dort aus würde ich einige bedingte Anweisungen verwenden, um Ihre Daten zu überprüfen, je nachdem, wie konsistent Ihre Eingabe ist. Wenn die einzige Inkonsistenz in Ihren Daten darin besteht, dass es manchmal ein Predir gibt und manchmal kein Predir, überprüfen Sie einfach die zurückgegebene Liste, um festzustellen, ob sie eine Länge von 3 oder 4 hat (oder> 4, wenn Ihre Straße Name enthält Leerzeichen).
if len (splitList) == 4:
elif len (splitList) == 3:
quelle