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

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

我在Access数据库中有一个地址字段,该字段已转换为SQLServer 2005。这个字段的所有内容都在一个字段中。我需要将地址的各个部分解析到规范化表中的相应字段中。我需要对大约4,000条记录这样做,而且它需要是可重复的。

假设:

  1. 在美国设定一个地址(目前)

  2. 假设输入字符串有时将包含收件人(被寻址者)和/或第二街道地址(即Suite B)。

  3. 国家可以缩写

  4. 邮政编码可以是标准的5位数字,也可以是zip+4。

  5. 在某些情况下有排字。

更新:在回答提出的问题时,标准没有得到普遍遵守,我需要存储单个值,而不仅仅是地理代码和错误表示错误(以上更正)。

样本数据:

  • 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 19901

  • P.O.DE 19903多佛778方框


跃然一笑
浏览 937回答 3
3回答

猛跑小猪

我在这类解析方面做了很多工作。因为有错误,你不会获得100%的准确性,但有几件事,你可以做的方式,大部分的方式,然后做一个可视化的BS测试。这是解决这一问题的一般方法。这不是代码,因为编写它是很学术的,没有什么奇怪的,只是很多字符串处理。(现在您已经发布了一些示例数据,我做了一些小改动)向后工作。从接近尾端的邮政编码开始,使用两种已知格式之一:xxxxx或XXXXX-XXXX。如果这没有出现,你可以假设你在城市,州部分,下面。下一件事,在拉链之前,将是状态,它要么是两个字母的格式,要么是文字。你也知道这些会是什么-只有50个。此外,您还可以搜索单词以帮助弥补拼写错误。在那之前是城市可能和州在同一条线上。你可以用一个邮政编码数据库根据拉链检查城市和州,或者至少使用它作为BS检测器。街道地址一般是一两行。第二行通常是套件号(如果有),但也可以是PO框。在第一行或第二行上检测到一个名字几乎是不可能的,但是如果它没有以一个数字作为前缀(或者它的前缀是“attn:”或“注意:”),它可以提示您它是名称还是地址行。我希望这能有所帮助。

鸿蒙传说

我认为外包这个问题是最好的选择:把它发送给谷歌(或雅虎)的地编码器。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]       }     }   ]}现在那是可以解释!
打开App,查看更多内容
随时随地看视频慕课网APP