我正在努力编写一个Python regex代码来提取德语地址,如下所示。在
Abc Gmbh恩塞希默大街6-8 79346 Endingen
Def股份有限公司。16 77971德国Kippenheim
Ghi Deutschland Gmbh 53169波恩
Jkl Gmbh Ensheimer街。6-8 79346恩丁根
我写了下面的代码来提取单个地址组件,并将它们作为一个正则表达式放在一起,但是仍然无法检测到上面的地址。有人能帮我吗?在
# 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)
请注意,我的目标是,如果这些地址中的任何一个出现在一个巨大的文本段落中,那么regex应该只提取并打印这些地址。有人能帮我吗?在
{{a1}对其他语言使用{a2,而不是^对其他语言使用}。您必须单独安装libpostal,因为它包含1.8GB的培训数据。在
好在,你可以给它地址部分的任何顺序,它会选择正确的部分大部分时间。 它使用机器学习,在多种语言的OpenStreetMap数据上进行训练。在
对于给定的示例,不一定需要从字符串中删除公司名称和国家/地区:
相关问题 更多 >
编程相关推荐