Proteusiq / hadithi

🧪 Data Science | ⚒️ MLOps | ⚙️ DataOps : Talks about 🦄
15 stars 1 forks source link

Danish Addresses Regex #31

Open Proteusiq opened 1 year ago

Proteusiq commented 1 year ago

A working regex for Danish addresses

import re

# DK ADDRESSES RE
DK_ADDRESSES_RE = re.compile(r"(?:[A-ZÅÆØ]{1}\w{2,80}\s?)" # Street name
                            r"(?:(?:\d{1,4}|\w{,6})" # House number or other identifier
                            r"(?:,|.|)(?:\s\d{,5}|)" # Optional apartment number
                            r"(?:tv|st|kl|mf|th|sal|)" # Optional address unit
                            r"(?:,|.|)\s?){,4}" # Optional separator
                            r"(?:DK-)?\d{4}\s" # Postal code
                            r"[A-ZÅÆØ]{1}\w{1,40}" # City name
                            r"(?:\s[CNVSKØ]{,2}|)") # Optional county code

# samples
book_of_address = """
NTT DATA Gearhalsvej 1 2500 Valby.
Griffenfeldsgade 77A, 2200 København K  
Oldjordsvej 2, 3. tv. 8000 Aarhus C at 13:45 tomorrow.

Gearhalsvej 398. 1tv, 2500 Valby to 
Gungevej 3, 1, 2650 Hvidovre SV

Mariendalsvej 54, st. tv. 2000 Frederiksberg
Porsvej 2, DK-9000 Aalborg

Styrelsen for Dataforsyning og Infrastruktur 
Rentemestervej 8 
2400 København NV 
7254 5500
sdfi@sdfi.dk
EAN-nummer: 5798009813640 
CVR-nummer: 37 28 41 14

Find kontakt information og andet praktisk information neden under! Addresse. Arnold Nielsens Boulevard 64B, 2650 Hvidovre. Åbnings Tider.

Arn.nielsens Boulev. 1B, st. 2650 Hvidovre

Jane Johnson
Oldjordsvej 2, 3. tv.
8000 Aarhus C

Hendes Majestæt Dronningens Hofstat
Hofmarskallatet
Postboks 2143
1256 København K
Besøgsadresse:
Amaliegade 18
1256 København K
E-mail: hofmarskallatet@kongehuset.dk
Kabinetssekretariatet
Postboks 2143
1256 København K
Besøgsadresse:
Amaliegade 18
1256 København K
E-mail: kabinetssekretariatet@kongehuset.dk
Ordenskapitlet
Postboks 2143
1256 København K
Besøgsadresse:
Det Gule Palæmaliegade 18
1256 København K
E-mail: ordenskapitlet@kongehuset.dk
E-mail: ordenshistoriografen@kongehuset.dk 
Deres Kongelige Højheder Kronprinsen og Kronprinsessens Hofstat
Postboks 2143
1256 København K
Besøgsadresse:
Amalienborg Slotsplads 8
1257 København K
E-mail: kronprinsparretshof@kongehuset.dk
Deres Kongelige Højheder Prins Joachim og Prinsesse Maries Hofstat
Postboks 2143
1256 København K
Besøgsadresse:
Det Gule Palæ
Amaliegade 18
1256 København K
E-mail: pjpmhof@kongehuset.dk
Hendes Kongelige Højhed Prinsesse Benediktes Hofstat
Postboks 2143
1256 København K
Besøgsadresse:
Amalienborg Slotsplads 7
1257 København K
E-mail: pbhof@kongehuset.dk

Lunde Trading A/S
Den Grønne vej 17
8600 Silkeborg
CVR: 32077439

DH Repræsentant suppleant

Ole Rasmussen
Hvidkildevej 44 1. tv., 2400 København NV
Tlf.: 24 49 86 57
Tlf. mobil: 24 49 86 57
E-mail: hvidkildevej44@gmail.com

Københavns Lydavis

Københavns Biblioteker Lydavis
Krystalgade 15, 2. sal
1172 København K.
Tlf. 33 66 46 00
E-mail: biblyd@kff.kk.dk
web: http://kbhlydavis.dk/

Henrik Jensen
Ramsingsvej 20 3. th
2500 Valby
tlf.: 70240301
E-mail: hej@blind.dk

Poul Brorson
Voldboligerne 4 st -mf, 1426 København K
Tlf.: 23 40 92 57 Tlf.: 70 24 04 01
E-mail: pbr@blind.dk

""".strip()

results = [' '.join(a for a in add.split() if not a.endswith(":")) for add in re.findall(DK_ADDRESSES_RE, book_of_address)]

for result in results:
    print(result)
    print('---')
Proteusiq commented 1 year ago

Lot of false positives

Proteusiq commented 1 year ago

Mmh! It did not work. But on the right path

m-groenborg commented 1 year ago

This one is good! Still has issues with "og" and "vej"

DK_ADDRESSES_RE = re.compile( r"(?:[A-ZÅÆØ]{1}?[a-zA-ZæøåÆØÅ./]{1,60}\s)+[0-9]{1,4}[A-Z,.]\s(?:\s?[0-9]{0,4}\s?[st|sal|th|tv|mf|DK|,.-]|)(?:\s?[st|sal|th|tv|mf|DK|,.-]*|)\s?[0-9]{4}\s\w{1,40}(?:\s[CNVSKØ]{,2}|)[.\s]" )

Proteusiq commented 1 year ago

Do you know it’s Christmas 🎅?

m-groenborg commented 1 year ago

Haha yes Merry Christmas 🎄 I need to catch up on my hours :)

Proteusiq commented 1 year ago

Hours are the last thing you should think 🤔 off.