![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: zeos
wie Adresse auseinandernehmen
hallo zusammen
ich habe in einem Feld Adressdaten wie folgt: Auf dem Eifelturm 1 Schlossberg 12 Hauptstr. 62-64 ich möchte die Hausnummern separat speichern. Jemand ne Idee, wie ich das hinbekomme? Mein Ansatz wäre per stringreplace ein sonderzeichen einzufügen und dann dort zu trennen. Aber weiter stehe ich grad auf dem Schlauch :-( Ich danke euch khh |
AW: wie Adresse auseinandernehmen
Oder den letzten Block abtrennen
|
AW: wie Adresse auseinandernehmen
Zitat:
|
AW: wie Adresse auseinandernehmen
|
AW: wie Adresse auseinandernehmen
Per Delphi?
Durchlaufen bis zum ersten ['0'..'9'] , ab da als Hausnummer behandeln ? |
AW: wie Adresse auseinandernehmen
Zitat:
|
AW: wie Adresse auseinandernehmen
Oder per TStringList.
Delphi-Quellcode:
var
sl: TStrings; ... sl := TStringList.Create; sl.Delimiter := ' '; sl.DelimitedText := <Str mit Hausnummer>; <hausnummer> := sl[sl.Count-1]; sl.Delete( sl.Count-1); <str> := sl.Text; .. sl.Free; |
AW: wie Adresse auseinandernehmen
Zitat:
warum kommt man auf die einfachsten Dinge nicht selbst ;-) EDIT : mh die Straße des 17. Juni sollte manuell zu finden sein :-) ich danke dir / euch |
AW: wie Adresse auseinandernehmen
Grobe Idee:
|
AW: wie Adresse auseinandernehmen
Zitat:
EDIT: funktioniert (fast)einwandfrei. die Leerzeichen zwischen den Strassennahmen die aus mehreren Wörtern bestehen werden eliminiert :-( ich danke euch |
AW: wie Adresse auseinandernehmen
Solch ähnliche Lösungen hatte ich auch mal.
Problem war dann, dass irgendwann Hausnummern im Stil von
Code:
vorlagen.
128 - 130
Am besten nimmst du den kompletten String und extrahierst ab dem ersten Vorkommnis einer Zahl bis zum Ende alles als Hausnummer. Leerzeichen dazwischen kannst du natürlich danach noch immer entfernen. Quasi so, wie Bummi es schon beschrieben hat. |
AW: wie Adresse auseinandernehmen
Hi zusammen.
Um noch einen weiteren Sonderfall mit rein zu bringen: In Berlin (und anderen Städten sicherlich auch) gibt es auch Straßen ohne Namen: eine Adresse dort wäre z.B. Straße 136 5 Wobei hier die 5 die Hausnummer ist. (was mit dem vorgenannten Ansatz zur Falscherkennung führen würde) Ich würde prinzipiell die am weitesten rechts stehenden Ziffern (ggf. mit Index a, b oder ähnlichen und ggf. mit von/bis, wie schon genannt "128 - 130") als Hausnummer betrachten und alles andere als den Straßennamen. Viele Grüße, Tim |
AW: wie Adresse auseinandernehmen
Hallo,
beschäftige mich seit vielen Jahren mit dem Thema. Die perfekte Lösung gibt es nicht. Die besten (aber nicht perfekten) Ergebnisse habe ich bisher mit folgender Logik erreicht:
Ggfls. kann man bei Teil 3 noch prüfen, ob er nur aus einem Buchstaben besteht, um Hausnummern der Form 12a zu separieren. Diese Logik scheitert im o.g. Beispiel von Berlin, aber auch in Mannheim (siehe z. B. ![]() |
AW: wie Adresse auseinandernehmen
Hallo,
einfache Antwort? Vergiss es. Viel zu viele Probleme. Heiko |
AW: wie Adresse auseinandernehmen
Es ist unmöglich die Adresse z.B. mit RegEx auseinander zu nehmen.
Denkt mal an Mannheim oder an Flurstücknummern. Was du machen kannst, ist z.B. von der Post die Datafactory nutzen. Dort stehen alle Straßen und Orte drin. Mit diesen Tabellen trennst du die Straße von der ggf. vorhandenen Nummer. |
AW: wie Adresse auseinandernehmen
Zitat:
Das Trennen von Strassennamen, Hausnummer und Hausnummerzusätze ist sehr schwierig. (es ist fast schon KI nötig) Man braucht für jede Ausnahme extra Code der dies behandelt. Meine letzte Idee (die ich aber noch nicht umgesetzt habe) war, dass man den String "tokenizen" müsste. A=Buchstabenkette B=Einzelbuchstabe 9=Ziffernkette 8=Ziffernkette gefolgt von Punkt x=Trennzeichen / oder - oder , oder . _=Folge von Leerzeichen Schlossberg 12, 3. Stock wäre also das Muster A_9x_8_A M 17,3 entspräche Muster B_9x9 Für jedes Muster muss man sich zusätzlich speichern, wo die Strasse und wo die Hausnr steckt. Mit 20 bis 50 verschiedenen Mustern kann man so evtl. alle Schreibweisen abdecken. |
AW: wie Adresse auseinandernehmen
Und an dieser Stelle muss man dann überlegen, ob es den Aufwand wert ist, dafür überhaupt komplizierten Quellcode zu schreiben. Vielleicht sind es nur so wenige Datensätze (wenige tausend), dass es sinnvoller wäre, ein einfaches Programm zu schreiben (nur die letzten Zahlen nehmen, z.B.). Und dann setzt man nochmal den Azubi 3 Stunden dran, um die Daten zu überprüfen und ggf. händisch nachzuarbeiten.
|
AW: wie Adresse auseinandernehmen
alsoo
ich habe jetzt von hinten die Zahlen abgetrennt. Da das natürlich nicht optimal ist, muss jemand( der AZUBI ist ne gute Idee :thumb:)die DS nochmal durchgehen. Das ist zwar im Moment ausreichend, aber leider keine endgültige Lösung, da sicher noch ein paar Tausend Sätze dazu kommen werden. |
AW: wie Adresse auseinandernehmen
Zitat:
|
AW: wie Adresse auseinandernehmen
warum verwendet ihr nicht Regular Expressions? Bietet sich doch an...
![]() |
AW: wie Adresse auseinandernehmen
Zum Beispiel weil:
Zitat:
Zum Thema: Ich hatte auch letztens eine Adresse ohne Hausnummer :mrgreen: Zitat:
|
AW: wie Adresse auseinandernehmen
Ich finde es keineswegs unmöglich. Du meinst mit herkömmlichen Methoden kommst du über die 99% ?
Im Grunde wird mit dem String zerlegen nur selber etwas nachgebaut, das RegEx bereits von Haus aus bietet. Mit RegEx kannst du die Anschrift zumindest recht einfach auch auf verschiedene Patterns prüfen und erkennen in welchem Format sie eingegeben wurde. |
AW: wie Adresse auseinandernehmen
Zitat:
Vorteil: Wenn du mal ungefähr weißt, wie es aufgebaut ist, sprich welches Pattern, kannst du gezielt Methoden darauf anwenden um Adressdaten zu extrahieren. |
AW: wie Adresse auseinandernehmen
Zitat:
Mit Handarbeit meinte ich hier tatsächlich den Menschen, der sich die Adresse anguckt, scharf nachdenkt und dann (falls existent) die Hausnummer eintippen kann. Mit der Hand. Nix automatisch. |
AW: wie Adresse auseinandernehmen
Hallo,
weiter oben schrieb ich, dass ich mich seit vielen Jahren mit dem Thema beschäftige. Wir haben zuletzt die Erfahrung gemacht, dass selbst Profiwerkzeuge wie qAdress und Uniserv (wo vermutlich viele Jahre Manpower hinterliegen) es nicht für alle Daten schaffen. Bei allen Adressbeständen sollte man tunlichst drauf achten, das Straße, Hausnummer und irgendwelche Zusätze, nie in ein Feld "gedaddelt" werden, man bekommt es nicht auseinander (und Auszubildende haben besseres verdient, als diesen "Mist" geradezubiegen). Und behaupte mir niemand, Eingemeindungen und Straßenumbenennungen kommen selten vor. Kein bundesweiter Straßenbestand ist nach einem viertel jahr noch korrekt. Große Adressbestände sollte man immer gegen vollständige Straßenverzeichnisse referenzieren und im Adressbestand nur den Fremdschlüssel auf diese Referenz ablegen (also die Daten normalisieren). Dies hat auch den Vorteil, dass bei Eingemeindungen, Straßenumbenennungen... nur die Daten in der Referenz geändert werden müssen und nicht die Datenbestände korrigiert werden müssen. Die Masse der Straßennahmen ist fast überall in der Form Straße Hausnummer vorhanden, damit kommt man sicherlich locker über 95%. Der Rest ist auch über reguläre Ausdrücke nicht komplett korrekt aufzulösen. Man kann sich da noch soviele Muster überlegen, es gibt immer wieder Anwender, die noch eine weitere Idee haben, wie man da Murx hineinbekommt. In den letzten ca. 20 Jahren ist es mir jedenfalls nicht gelungen eine 100%ige Lösung zu finden oder jemanden zu finden, der diese bereits hat. Und ich bin mir sicher, gäbe es diese 100%ige Lösung, wäre sie in Profiwerkzeugen enthalten. Sollte hier jemand diese Lösung finden, so meine Empfehlung: Patent auf den Algorithmus anmelden und meistbietend verkaufen oder lizensieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz