Я очень стараюсь написать код регулярного выражения Python для извлечения немецкого адреса, как показано ниже.
Abc Gmbh Ensisheimer Straße 6-8 79346 Endingen
Def Gmbh Keltenstr. 16 77971 Kippenheim Deutschland
Ghi Deutschland Gmbh 53169 Бонн
Jkl Gmbh Ensisheimer Str. 6 -8 79346 Endingen
Я написал приведенный ниже код для извлечения отдельных компонентов адресов, а также собрал их в единое регулярное выражение, но все еще не смог обнаружить вышеуказанные адреса. Может кто-нибудь помочь мне с этим?
# TEST COMPANY NAME
string = 'Telekom Deutschland Gmbh 53169 Bonn Datum'
result = re.findall(r'([a-zA-Zäöüß]+\s*?[A-Za-zäöüß]+\s*?[A-Za-zäöüß]?)',string,re.MULTILINE)
print(result)
# TEST STREET NAME
result = re.findall(r'([a-zA-Zäöüß]+\s*\.)',string)
print(result)
# TEST STREET NUMBER
result = re.findall(r'(\d{1,3}\s*[a-zA-Z]?[+|-]?\s*[\d{1,3}]?)',string)
print(result)
# TEST POSTAL CODE
result = re.findall(r'(\d{5})',string)
print(result)
# TEST CITY NAME
result = re.findall(r'([A-Za-z]+)?',string)
print(result)
# TEST COMBINED ADDRESS COMPONENTS GROUP
result = re.findall(r'([a-zA-Zäöüß]+\s+?[A-Za-zäöüß]+\s+?[A-Za-zäöüß]+\s+([a-zA-Zäöüß]+\s*\.)+?\s+(\d{1,3}\s*[a-zA-Z]?[+|-]?\s*[\d{1,3}]?)+\s+(\d{5})+\s+([A-Za-z]+))',string)
print(result)
Обратите внимание, что моя цель заключается в том, чтобы, если какой-либо из этих адресов присутствовал в огромном абзаце текста, регулярное выражение должно извлекать и печатать только адреса. Может кто-нибудь помочь мне?