Forum: PC-Programmierung Adresse in Felder umwandeln?


von Umwandelnder (Gast)


Lesenswert?

Ich habe Adressen der Form
1
Birkenweg 13 51491 Overath 
2
Emil-Hoffmann-Str. 13 50996 Köln 
3
Rolandstr. 65 50677 Köln 
4
Markusplatz 35 50968 Köln 
5
Bonner Str. 245 50968 Köln 
6
Aachener Str. 1590 50858 Köln 
7
Viersener Str. 122 50733 Köln 
8
Bergische Landstr. 219 51375 Leverkusen 
9
Josef Gladbach Platz 81 50259 Pulheim 
10
Hauptstr. 769 51399 Burscheid 
11
Bielsteiner Str. 117-119 51674 Wiehl
Wie kann ich verläßlich diese einsortieren in
Straße
Hausnummer
PLZ
Ort
?

PHP, Autohotkey oder scalc.

von STK500-Besitzer (Gast)


Lesenswert?

Wenn sicher gestellt ist, dass die Hausnummer immer dort steht, muss man 
nur den String von vorne nach hinten nach einer Ziffer durchsuchen.
Das folgende Leerzeichen markiert die Postleitzahl und das 
darauffolgende den Ort.
Problematisch dürfte es sein, wenn dei Hausnummer "2 a" geschrieben 
wird...
Also wieder nach einer Zahl suchen bzw. den Strinteil bis zur nächsten 
Zahl als Hausnummer verwenden.
Nächstes Problem ergibt sich bei "D-51674"...
Wenn man aber im Vorfeld solche Schreibweisen vermeidet, ist das 
Zerlegen kein Problem.
Sowas kann man sogar mit Excel machen.

von Christian B. (casandro)


Lesenswert?

Such mal nach "Regulären Ausdrücken" oder "Regular Expressions" oder 
kurz "regex". Wenn Du Dein Problem, sprich die Aufteilung der Zeile, in 
solchen Ausdrücken darstellen kannst, kannst Du das mit jeder Sprache 
machen die eine Bibliothek dafür hat. (Mein Tipp wäre Perl)

Wobei ich mir relativ sicher bin das das geht. Du kannst die PLZ als 5 
Ziffern oder ein D-5 Ziffern sehen. Und rechts davon ist die Stadt. 
Links kannst Du das auch an der Zahl trennen. Alles ab der 1. Ziffer ist 
die Hausnummer, links davon ist der Straßenname.

von Kai S. (kai1986)


Lesenswert?

Hallo,

du hast das Problem, dass das Trennzeichen (Leerzeichen) nicht nur zur 
Trennung der einzelnen Abschnitte sondern auch in diesen verwendet wird. 
Trotzdem würde ich eine Zeile erstmal in Blöcke zerlegen, die von 
Leerzeichen getrennt werden. Wenn du dann 4 Blöcke erhälst, wie z.B. bei
Birkenweg 13 51491 Overath
dann musst du es nur noch zuordnen und bist fertig. Dazu musst du dir 
aber sicher sein, dass immer alle Felder ausgefüllt sind und du keine 
fehlenden Einträge wie z.B. sowas hast
Viersener Str. 122 50733

Bei 5 Blöcken kannst du dann z.B. überprüfen, ob der vorletzte Block 
eine 5-stellige Zahl ist, damit du die PLZ hast, dann weißt du auch 
schon, das der letzte Block der Ort ist. Wenn weiter der Block vor der 
PLZ eine Zahl ist, dann ist das die Hausnummer und du musst nur noch die 
ersten beiden Blöcke zu der Straße zusammenfassen, weil da das 
zusätzliche Leerzeichen, das die Aufteilung verursacht hat steckt. So 
müsstest du dann alle möglichen Sonderfälle abhandeln.

Unter Umständen ist es auch gut, alle Standardeinträge, die 4 Blöcke 
ergeben umzuwandeln und alle anderen in eine neue Datei zu schreiben, um 
sie sich erstmal gesondert anzusehen. Je nach Menge der Ausreißer geht 
es dann sogar schneller, die einfach von Hand einzusortieren, wenn das 
z.B. nur 20 Stück sind.

Schreiben kannst du das mit jeder Sprache, die Strings in Zeichen 
aufteilen kann, was quasi jede Sprache kann.

Gruß Kai

von cppler (Gast)


Lesenswert?

Wenn Deine PLZ immer eine fünfstellige Zahl ist wäre das der sinnvollste 
Ansatzpunkt.

von Vlad T. (vlad_tepesch)


Lesenswert?

STK500-Besitzer schrieb:
> Wenn sicher gestellt ist, dass die Hausnummer immer dort steht, muss man
> nur den String von vorne nach hinten nach einer Ziffer durchsuchen.

und wenn die Straße "Straße 16" heißt?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Vlad Tepesch schrieb:
> und wenn die Straße "Straße 16" heißt?

"Straße 16" klingt konstruiert, aber solch eine Straße gibt es wirklich 
bei mir in der Nähe:

"an den dreißig Morgen"  [z.B. Hausnummer 99]

und wenn dann jemand das so erfasst:

"an den 30 Morgen 99"

dann wird das etwas schwer(er) differenzierbar.

Ist halt die Frage, wie oft das vorkommt, und was man generell mit 
"fehlerhaften" Datensätzen macht.

von Konrad S. (maybee)


Lesenswert?

Nicht konstruiert: "Straße des 17. Juni"

von Vlad T. (vlad_tepesch)


Lesenswert?


von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Solange es keine Orte mit 5-stelligen Zahlen im Namen gibt könnte das 
aufdröseln von hinten solche Fälle doch ohne Probleme abdecken...

von Karl H. (kbuchegg)


Lesenswert?

Da man solche Daten sowieso nur einmal übernimmt (du wirst dieses 
Fileformat ja doch wohl hoffentlich nicht als dein Arbeitsformat 
nehmen!) wird man sowieso bei nicht plausiblen Adressen einen 
Benutzereingriff vorsehen müssen.

Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen, 
Trennzeichen zwischen die "Felder" einzubauen. Da scheint es sich um 
einen Anfänger zu handeln, der noch nie das Problem hatte, Daten die er 
auf ein File geschrieben hat auch wieder einlesen zu müssen. Muss man 
alles lernen, aber wenn man ihm das Problem nicht schildert, lernt er es 
nie, sondern ist auch noch stolz auf den Bock, den er da geschossen hat.

von Dr. Sommer (Gast)


Lesenswert?

Am besten gar nicht aufteilen, einfach als langes Feld lassen und das am 
Ende genau so auf den Briefumschlag drucken, es gibt soviele komische 
Adressen mit Zusätzen etc. Gleiches gilt für Namen, in längst nicht 
allen Kulturkreisen sind Namen nach "Vorname Nachname" aufgebaut...

von Karl H. (kbuchegg)


Lesenswert?

Dr. Sommer schrieb:
> Am besten gar nicht aufteilen, einfach als langes Feld lassen und das am
> Ende genau so auf den Briefumschlag drucken,

damit ist dann Ärger mit der Post vorprogrammiert.
Es gibt DIN Normen, wie Adressangaben auf Briefsendungen auszusehen 
haben.
Von einem Programm sollte man doch erwarten, dass es diese einhält, 
zumal die so schwer dann auch wieder nicht umzusetzen sind.

> es gibt soviele komische
> Adressen mit Zusätzen etc. Gleiches gilt für Namen, in längst nicht
> allen Kulturkreisen sind Namen nach "Vorname Nachname" aufgebaut...

Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon 
seit Jahrzehnten.

von Dr. Sommer (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon
> seit Jahrzehnten.
Es ist eher ein Problem der Ein-Gabe & Speicherung, wenn das Programm 2 
Felder verlangt, der Name aber nur einteilig ist, oder dreiteilig... Die 
einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.

Karl Heinz Buchegger schrieb:
> damit ist dann Ärger mit der Post vorprogrammiert.
Na die wissen doch am Besten mit Adressen umzugehen.
> Es gibt DIN Normen, wie Adressangaben auf Briefsendungen auszusehen
> haben.
Dann möge man die Adresse in Post-kompatibler Form ins Programm 
eingeben, in einem Textfeld.

von Robert L. (lrlr)


Lesenswert?

>Die
>einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.

und genau deshalb entstehen dann solche "Probleme" wie der TO hat..

also "sinnvoll" ist wohl anders..

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen,
> Trennzeichen zwischen die "Felder" einzubauen.

Das ist in vielen Fällen aber nicht möglich. Ich erinnere mich auch noch 
an einen Kunden, dessen Warenwirtschaftsdaten, insbesondere Kunden und 
Lieferanten, auf ein neues System übertragen werden mussten. Die 
einfachste Methode war, mit einem RS232-Sniffer den Datenaustausch 
zwischen Rechner und Drucker mitzulauschen. Es war erstaunlich einfach, 
solche Informationen wie z.B. Titelzeile, Seitenvorschub usw. 
herauszufiltern.

Der einzige Haken war bloß, dass bei jedem Datenexport Bäume getötet 
wurden, da der Rechner die Rückmeldungen vom Drucker auswertete und 
"leeres Drucken" nicht möglich war. Bei noch größeren Datenbeständen 
hätte sich aber irgendwann gelohnt, einen Druckeremulator zu bauen, aber 
das wäre hier nicht ökonomisch gewesen.

von Karl H. (kbuchegg)


Lesenswert?

Dr. Sommer schrieb:
> Karl Heinz Buchegger schrieb:
>> Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon
>> seit Jahrzehnten.
> Es ist eher ein Problem der Ein-Gabe & Speicherung, wenn das Programm 2
> Felder verlangt, der Name aber nur einteilig ist, oder dreiteilig... Die
> einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.

Findige Sekretärinnen finden da eine Lösung.
Sie lassen ein Textfeld frei, bzw. geben in das andere den Teil ein, den 
sie für den kompletten Vornamen halten. Kein Mensch sagt, dass das nur 1 
Wort sein darf.

> Dann möge man die Adresse in Post-kompatibler Form ins Programm
> eingeben, in einem Textfeld.

Das ist doch Quatsch.
Spätestens dann, wenn dein Kunde auch mal ein paar statistische 
Auswertungen haben will, wie regionale Verteilung etc. dann hast du ein 
enormes Problem.

Mit Staat, Land, PLZ, Ort, Strasse, Hausnummer und eventuell einem 
Zusatz für Geschoss/Stiege/WOhnungsnummer kann man so gut wie alles 
abdecken.

Je besser du das schon bei der Eingabe aufschlüsseln lässt, desto 
einfacher wird die Sache. Aus Einzelteilen eine Adresse zusammenzusetzen 
ist trivial. Aber die Umkehrung ist es nicht.

Und beim Namen ist es genau dasselbe. Vorname und Nachnahme trennen! 
Wenn, wie in den USA gerne gemacht, ein sog. Middle-Initial üblich ist, 
dann lässt man sich auch den eingeben. Genauso extra Felder für Anrede 
und Titel.

Deine 'einzige sinnvolle Universallösung' hingegen ist eine 100% sichere 
Bank für Probleme. Probleme, die der Programmierer ausbaden muss.

von Karl H. (kbuchegg)


Lesenswert?

Andreas Schweigstill schrieb:
> Karl Heinz Buchegger schrieb:
>> Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen,
>> Trennzeichen zwischen die "Felder" einzubauen.
>
> Das ist in vielen Fällen aber nicht möglich.

Es kommt natürlich vor, dass ein SW-Hersteller nicht mehr existiert oder 
nicht Willens ist.

> Ich erinnere mich auch noch
> an einen Kunden, dessen Warenwirtschaftsdaten, insbesondere Kunden und
> Lieferanten, auf ein neues System übertragen werden mussten. Die
> einfachste Methode war, mit einem RS232-Sniffer den Datenaustausch
> zwischen Rechner und Drucker mitzulauschen. Es war erstaunlich einfach,
> solche Informationen wie z.B. Titelzeile, Seitenvorschub usw.
> herauszufiltern.

Du musst aber auch zugeben, dass das schon vor langer Zeit war, als 
Datenexport noch als etwas Böses angesehen wurde, das man am besten 
ignoriert :-)

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> Es kommt natürlich vor, dass ein SW-Hersteller nicht mehr existiert oder
> nicht Willens ist.

Der Softwarehersteller wäre bereit gewesen, für einen deutlich 
sechsstelligen Betrag eine Portierung der Software auf eine damals 
(Mitte der neunziger Jahre) aktuelle Plattform durchzuführen. Mir ist 
nicht bekannt, wie er den Datenexport durchgeführt hätte, aber er konnte 
definitiv noch (horrend teuren) Support für die Kienzle-Anlage aus den 
70er oder sehr frühen achtziger Jahren leisten. Vermutlich hatte er 
selbst noch eine Anlage am laufen.

> Du musst aber auch zugeben, dass das schon vor langer Zeit war, als
> Datenexport noch als etwas Böses angesehen wurde, das man am besten
> ignoriert :-)

Damals war Datenexport nicht böse, aber zur Zeit der Anschaffung der 
Anlage schon. Sicherlich hätten wir auch versuchen können, die Daten per 
Diskette zu extrahieren, was jedoch daran scheiterte, dass wir kein 
8-Zoll-Diskettenlaufwerk und passende Software hatten, um das 
proprietäre Datenformat der Kienzle-Anlage zu importieren.

Außerdem erfüllten die Listendrucke der alten Software exakt unsere 
Anforderungen: festes Format, Feldtrennung mit Tabulatorzeichen, 
FF-Zeichen zu Beginn jeder Seite und damit leicht filterbar.

von Reinhard Kern (Gast)


Lesenswert?

Andreas Schweigstill schrieb:
> Außerdem erfüllten die Listendrucke der alten Software exakt unsere
> Anforderungen:

Bis vor einiger Zeit wurde in ganzseitigen Anzeigen eine Software für 
genau dafür angeboten: die Erfassung von Daten, die nur als Listendruck 
vorliegen, der Name fällt mir aber im Moment nicht ein. Es scheint einen 
grossen Bedarf dafür gegeben zu haben.

Gruss Reinhard

von Robert L. (lrlr)


Lesenswert?

ich hab schon mit PDF2TXT sachen importiert, weil die quelle nix 
besseres hergab..

(automatisiert, nicht einmalig..)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.