0

我正在做一个地址解析项目,我需要检测地址的各个组成部分,例如城市、州、邮政编码、街道编号等。

我编写了一个正则表达式来过滤掉处理所有用户输入的邮政编码。

sample_add = "16th main road btm layout 560029 5-6-00-76 56 00 78 560-029 25 -000-1"
regexp = re.compile(r"([\d])[ -]*?([\d])[ -]*?([\d])[ -]*?([\d])[ -]*?([\d])[ -]*?([\d])")
print(re.findall(regexp, sample_add))

Output :- [560029, 560076, 560078, 560029, 250001]

这可以识别此类地址的邮政编码,但是,当出现如下地址时,它会结合街道编号并将其解释为邮政编码,

Ex. `sample_add_2 = "House no 323/46 16th main road, btm layout, bengaluru 560029"

在这种情况下,邮政编码被标识为 323461,而正确的应该是 560029

4

1 回答 1

0

如果我没看错,我们会搜索一个 6 位数字,但它可以包含一些分隔符,例如- ,但不是\。这应该可以处理。(如果没有,请说明您想要的结果):

\b(\d[\- ]*){6}\b(?<! )

https://regex101.com/r/wxYgwr/3

于 2019-01-11T14:07:22.757 回答