【问题标题】:Get Indian postal codes from address string with other numbers从带有其他数字的地址字符串中获取印度邮政编码
【发布时间】:2019-06-06 10:00:09
【问题描述】:

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

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

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]

这可以识别这些地址的postal_codes,但是,当像下面这样的地址出现时,它会结合Street nos并将其解释为邮政编码,

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

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

【问题讨论】:

  • 问题与machine-learning 无关 - 请不要向标签发送垃圾邮件(删除并添加了regexpython)。
  • 它基本上是机器学习项目数据预处理的一部分,我有一个带标签的地址数据集,然后我用它来训练我的模型来预测新地址的组成部分跨度>
  • 在调试时可能需要帮助,例如,随后在宇宙飞船中使用的排序算法这一事实并不能证明这个问题是关于 space-engineering...

标签: python regex nlp postal-code natural-language-processing


【解决方案1】:

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

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

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

【讨论】:

  • 如果您能向我们提供更多信息,了解哪些内容应该匹配,哪些内容不应该匹配,检查后的文件是什么样子 - 我们可以为您提供一个很好的正则表达式。但现在它是泛化的,可以匹配不需要的部分。
猜你喜欢
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多