Hallo,
ich importiere oft Adressen, diese müssen nach Straßenname und Hausnummer geteilt werden, d.h.:
aus Daumlerstr.3 wird Daumlerstr. 3
aus Wege 2 b soll Wege 2b werden und
Hood23 a soll auch Hood 23a werden.
Das erste ist je nicht wirklich schwer, ich trenne einfach bei dem ersten Leerzeichen von Links, bei den anderen Optionen bin ich mir abe rnicht sicher wie ich das effektiv lösen könnte, wahrscheinlich mit Regular expression. Aber muss da müsste man ja ganz schön viele Sachen hintereinander prüfen...
Hat evtl. jemand ein Snippet für so etwas?
Ansonsten würde ich es auf diese Art machen
Wenn 1. Zeichen von rechts == Zahl:
__wenn 2. Zeichen von Rechts gleich Leerzeichen:
____ok
__wenn 2. Zeichen von Rechts gleich Zahl:
____wenn 3. Zeichen von Rechts gleich Leerzeichen:
______ok
Wenn 1. Zeichen von rechts == Buchstabe:
__wenn 2. Zeichen von Rechts gleich Zahl:
____wenn 3. Zeichen von Rechts gleich Leerzeichen:
______ok
____wenn 3. Zeichen von Rechts gleich Zahl:
______wenn 4. Zeichen von Rechts gleich Leerzeichen:
________ok
usw. gibt natürlich noch einige weitere Verzweigungen und es kann dann auch optimiert werden, aber von der Struktur habe ich hoffentlich verständlich machen können was ich meine...
Adressen an Hausnummer splitten
Hallo marinjo,
Du suchst nach sowas?
Du suchst nach sowas?
Code: Alles auswählen
import re
RE_ADRESSE = re.compile(r'^(\D*?)\s*(?:(\d+)\s*(\D*))?$')
strasse, hausnr, extra = RE_ADRESSE.match('Daumlerstr.3').groups()
Mit den Anforderungen würde ich einfach an der ersten Ziffer aufteilen und dann die Bestandteile wieder passend zusammenbauen.
Es gibt allerdings eine Menge sehr merkwürdiger Kombinationen. Das Beispiel D 6, 21 ist beispielsweise eine gültige Adresse in Mannheim.
Code: Alles auswählen
import re
data = [
'Daumlerstr.3',
'Wege 2 b',
'Hood23 a',
'D 6, 21',
'Gemüseweg'
]
for element in data:
parts = re.split(r'(\d)', element, maxsplit=1)
#print(parts)
strasse = parts[0].strip()
ergaenzung = (''.join(parts[1:])).replace(' ', '')
print('-{}-{}-'.format(strasse, ergaenzung))
Und dann gibt es auch noch Straßen wie "Straße des 17. Juni", "Platz des 18. März" oder einfach "Straße 1", "Straße 2", ... Die sind auch nicht ganz so selten: in Berlin gibt es davon fast 300. Und natürlich gibt es das hier auch noch mit erhöhtem Schwierigkeitsgrad: auch Straßen wie "Straße 18a" oder "Straße 52b" existieren. Viel Glück 
In Mannheim war man auch noch sehr kreativ: "U3", "U4", "M3a", ... Und zwar der ganze Stadtkern.

In Mannheim war man auch noch sehr kreativ: "U3", "U4", "M3a", ... Und zwar der ganze Stadtkern.
Das Leben ist wie ein Tennisball.