为了账号安全,请及时绑定邮箱和手机立即绑定

从字符串中解析可用的街道地址、城市、州、Zip

从字符串中解析可用的街道地址、城市、州、Zip

从字符串中解析可用的街道地址、城市、州、Zip我在Access数据库中有一个地址字段,该字段已转换为SQLServer 2005。这个字段的所有内容都在一个字段中。我需要将地址的各个部分解析到规范化表中的相应字段中。我需要对大约4,000条记录这样做,而且它需要是可重复的。假设:在美国设定一个地址(目前)假设输入字符串有时将包含收件人(被寻址者)和/或第二街道地址(即Suite B)。国家可以缩写邮政编码可以是标准的5位数字,也可以是zip+4。在某些情况下有排字。更新:在回答提出的问题时,标准没有得到普遍遵守,我需要存储单个值,而不仅仅是地理代码和错误表示错误(以上更正)。样本数据:A.P.Croll&son 2299 Lewes-Georgetown Hwy,乔治敦,DE 19947绍尼路11522号,格林伍德DE 19950国王高速公路144号,S.W.多佛,DE 19901综合一致服务2宾士道405号新城堡套房,DE 19720休谟不动产33梅德尔岭法院,刘易斯,DE 19958尼克尔斯挖掘2742号普拉斯基休伊纽瓦克,DE 19711编号DE 19904,Smyrna,布林锡安路2284号VEI Dover十字路口,LLC 1500蛇形路,巴尔的摩MD21套房100北杜邦公路多佛580号,DE 19901P.O.DE 19903多佛778方框
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我在这类解析方面做了很多工作。因为有错误,你不会获得100%的准确性,但有几件事,你可以做的方式,大部分的方式,然后做一个可视化的BS测试。这是解决这一问题的一般方法。这不是代码,因为编写它是很学术的,没有什么奇怪的,只是很多字符串处理。

(现在您已经发布了一些示例数据,我做了一些小改动)

  1. 向后工作。从接近尾端的邮政编码开始,使用两种已知格式之一:xxxxx或XXXXX-XXXX。如果这没有出现,你可以假设你在城市,州部分,下面。
  2. 下一件事,在拉链之前,将是状态,它要么是两个字母的格式,要么是文字。你也知道这些会是什么-只有50个。此外,您还可以搜索单词以帮助弥补拼写错误。
  3. 在那之前是城市

    可能

    和州在同一条线上。你可以用一个

    邮政编码数据库

    根据拉链检查城市和州,或者至少使用它作为BS检测器。
  4. 街道地址一般是一两行。第二行通常是套件号(如果有),但也可以是PO框。
  5. 在第一行或第二行上检测到一个名字几乎是不可能的,但是如果它没有以一个数字作为前缀(或者它的前缀是“attn:”或“注意:”),它可以提示您它是名称还是地址行。

我希望这能有所帮助。


查看完整回答
反对 回复 2019-07-08
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

我认为外包这个问题是最好的选择:把它发送给谷歌(或雅虎)的地编码器。Geo编码器不仅返回lat/long(这里不感兴趣),还返回地址的丰富解析,其中填充了您没有发送的字段(包括ZIP+4和Country)。

例如,解析“1600AmphitheaParkway,山景城,CA”就会产生这样的结果。

{
  "name": "1600 Amphitheatre Parkway, Mountain View, CA, USA",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [
    {
      "address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
      "AddressDetails": {
        "Country": {
          "CountryNameCode": "US",
          "AdministrativeArea": {
            "AdministrativeAreaName": "CA",
            "SubAdministrativeArea": {
              "SubAdministrativeAreaName": "Santa Clara",
              "Locality": {
                "LocalityName": "Mountain View",
                "Thoroughfare": {
                  "ThoroughfareName": "1600 Amphitheatre Pkwy"
                },
                "PostalCode": {
                  "PostalCodeNumber": "94043"
                }
              }
            }
          }
        },
        "Accuracy": 8
      },
      "Point": {
        "coordinates": [-122.083739, 37.423021, 0]
      }
    }
  ]}

现在那是可以解释!


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 937 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信