【问题标题】:Address Parser in Java [closed]Java中的地址解析器[关闭]
【发布时间】:2011-02-15 13:26:04
【问题描述】:

我有数千条地址数据,我想解析它们,以便将街道与国家/地区与邮政编码等分开。

在 Java 中有没有办法做到这一点?

【问题讨论】:

  • 您能提供更多关于地址格式的信息吗?
  • 您需要在问题中添加更多细节才能获得好的答案。您有任何示例地址吗,它们是针对哪个国家/地区的,等等。
  • 您的数据是如何格式化的?纯文本、csv、tsv、xml?是普通的还是免费的?

标签: java parsing text-parsing


【解决方案1】:

我知道谷歌开源了他们的international address and phone number parsing library。我建议您查看他们的演示文稿here 和 javadoc。

【讨论】:

  • +1 这真是太棒了,不知道他们会把它放在那里。否则,我能想到的唯一解决方案是调用 Yahoo/Google 地图 API 之一,但我认为他们的 ToS 明确禁止此活动,或使用付费解决方案。
  • 我错过了什么吗?我只能找到电话号码解析的例子,我找不到地址解析的API
【解决方案2】:

如果您只是以信件上的形式拥有来自世界各地的地址,然后您想在那里发送信件,您最好将它们保留为这种格式(也许在国家分裂之后,这通常是最后一个)。

各个国家/地区之间的内部格式差异很大(即使只是比较德国、英国、俄罗斯),并且拥有一个包含各个组件的数据库之后需要单独的(特定于国家/地区的)逻辑将它们重新组合在一起。

(我曾经有一个应用程序输入各个字段,然后从那时起创建了一个地址列表(通过“德国方式”),并且总是收到来自英国用户的抱怨,我将他们的地址格式化为顺序错误。所以在后来的版本中,我只是创建了一个多行“地址”输入字段,然后我将其输出而不做任何更改。)

【讨论】:

    【解决方案3】:

    如果您不想添加第 3 方依赖项,则可以使用正则表达式。

    见:http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.htmlhttp://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html

    用法基本上是:

    private static final Pattern PAT_NAME = Pattern.compile("my\\sregex");
    ...
    Matcher matcher = PAT_NAME.matcher("my address");
    

    【讨论】:

      【解决方案4】:

      这里有一个较旧的库:http://jgeocoder.sourceforge.net/parser.html,但它适用于大多数情况。 如果你想使用 API,我过去使用过 SmartyStreets,它们运行良好 (https://smartystreets.com/)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-20
        • 2013-06-14
        • 2011-06-19
        • 2023-03-26
        • 2011-03-30
        • 2012-07-21
        • 2011-07-25
        • 2011-03-15
        相关资源
        最近更新 更多