akebe / address-parse Goto Github PK
View Code? Open in Web Editor NEW🌏对国内地址地区进行智能解析,提取关键数据,如有识别不准的地址请Issues
License: MIT License
🌏对国内地址地区进行智能解析,提取关键数据,如有识别不准的地址请Issues
License: MIT License
下面这样的地址,解析的时候就会有错误
廣東省東莞市虎門鎮運河北路84號行運茶餐廳
解析后是这样的
{
"province": "天津",
"city": "天津市",
"area": "河北区",
"details": "路84號行運茶餐廳",
"name": "廣東省東莞市虎門鎮運",
"code": "120105",
"__type": "parseByArea",
"__parse": 0,
"mobile": "",
"zip_code": "",
"phone": ""
}
只是单纯使用script标签引入
测试的时候发现有些地区无法被识别,比如吐鲁番,请大佬有时间看一下是什么问题吧
您好:
首先特别感谢您这个项目,做一个快递的小程序。智能解析地址体验感大大提升。
但在使用过程中偶尔会遇到地址识别错误的问题,比如:“**伊宁市上海城徐汇苑23号楼5单元401室”。因为有“上海”和“徐汇”这两个关键字的原因会识别成: 上海 上海市 徐汇区 苑23号楼5单元401室
第二个问题是“重庆有些”县“识别不出来。用您提供的Utils.getTargetAreaListByCode查询出来,看到县是单独列出来的。不知道什么意思,还是我不会用吗?
第三个,对于某些省、自治区有:“省直辖县”、“自治区直辖县级行政区划”。这类情况每个平台称呼不一样,有的是“省直辖县”、“自治区直辖县级行政区划”,有的是:市、县都写的一样的(县级)。有的用的“其它”。能不能给个参数让用户自己选择使用哪一种替代。
再次感谢您无偿分享的精神,向您学习和致敬
case: 北京市市辖区东城区嘿嘿 嘿嘿 18031491271
市辖区会识别不出来
试了一下
/src/parse/parse-area.js 224行
if (index > -1 && index < 3) 改成 if (index > -1 && index < 4) 就可以了
不知道这里 < 3 是出于什么考虑
如:湖南省邵阳县长乐乡xxxxx
结果:
{
"province": "湖南省",
"city": "邵阳市",
"area": "",
"details": "县长乐乡xxxxx",
"name": "",
"code": "430500",
"__type": "parseByProvince",
"__parse": true,
"mobile": "",
"zip_code": "",
"phone": ""
}
如山西省大同市城区/矿区/南郊区/大同县。解析完后只有province和city, area为空。其他的省份不清楚
公主岭市以前是属于四平市,现在划分到了长春市
原地区编码 220381 ,现国土资源局编码 220184
这种地址解析不出垫江县
您用安全的包装发到这个地址:江苏省南京市玄武区 珠江路498号 未来城B座946室 杨寅13913018489 里面用纸条备注下旺旺ID 以及硬盘问题 快递麻烦不要到付 不要发顺丰 什么便宜发什么 邮费我们会打您支付宝账户(如果是硬盘本身问题) 硬盘务必包装好 不能有外伤 麻烦了
请勿发 百世快递,谢谢
解析地址
牡丹江市
解析结果
{
"province": "山东省",
"city": "菏泽市",
"area": "牡丹区",
"details": "江市",
"name": "",
"code": "371702",
"__type": "parseByArea",
"__parse": 0,
"mobile": "",
"zip_code": "",
"phone": ""
}
地址紧接着名字的情况如何处理,现版本地址和名字一同被解析为详细地址
提示:AddressParse.parse is not a function
作者方便的话可以找朋友用微信小程序云函数复现一下问题。
我把AddressParse打印出来是如下内容:
{ ParseAddress:
{ [Function: ParseAddress]
ExcludeKeys:
[ '发件人',
'收货地址',
'收货人',
'收件人',
'收货',
'手机号码',
'邮编',
'电话',
'所在地区',
'详细地址',
'地址',
':',
':',
';',
';',
',',
',',
'。',
'、' ],
ParseArea: ParseArea {},
Reg:
{ mobile: /(86-[1][0-9]{10})|(86[1][0-9]{10})|([1][0-9]{10})/g,
phone: /(([0-9]{3,4}-)[0-9]{7,8})|([0-9]{12})|([0-9]{11})|([0-9]{10})|([0-9]{9})|([0-9]{8})|([0-9]{7})/g,
zipCode: /([0-9]{6})/g } },
AREA:
{ district_list:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
province_list:
{ '110000': '北京',
'120000': '天津',
'130000': '河北省',
'140000': '山西省',
'150000': '内蒙古自治区',
'210000': '辽宁省',
'220000': '吉林省',
'230000': '黑龙江省',
'310000': '上海',
'320000': '江苏省',
'330000': '浙江省',
'340000': '安徽省',
'350000': '福建省',
'360000': '江西省',
'370000': '山东省',
'410000': '河南省',
'420000': '湖北省',
'430000': '湖南省',
'440000': '广东省',
'450000': '广西壮族自治区',
'460000': '海南省',
'500000': '重庆',
'510000': '四川省',
'520000': '贵州省',
'530000': '云南省',
'540000': '西藏自治区',
'610000': '陕西省',
'620000': '甘肃省',
'630000': '青海省',
'640000': '宁夏回族自治区',
'650000': '**维吾尔自治区',
'710000': '**省',
'810000': '香港特别行政区',
'820000': '澳门特别行政区' },
city_list:
{ '太长,已手动省略...' },
area_list:
{ '太长,已手动省略...' },
Utils:
{ strLen: [Function: strLen],
getAreaByCode: [Function: getAreaByCode],
getAreaByAddress: [Function: getAreaByAddress],
getTargetAreaListByCode: [Function: getTargetAreaListByCode],
Reg:
{ mobile: /(86-[1][0-9]{10})|(86[1][0-9]{10})|([1][0-9]{10})/g,
phone: /(([0-9]{3,4}-)[0-9]{7,8})|([0-9]{12})|([0-9]{11})|([0-9]{10})|([0-9]{9})|([0-9]{8})|([0-9]{7})/g,
zipCode: /([0-9]{6})/g } },
default: ParseAddress {} }
测试了一下,仅是识别国内的,没有国际,请教有没有什么思路没?
另外,如果这个库能通过现成的json数据来动态分析的话就更完美了
比如:海南省三亚市天涯区海南省三亚市天涯区凤凰镇芒果村
可以得到海南省 三亚市 天涯区 凤凰镇芒果村
这种结果吗?快宝能做到 不知道他们怎么做的?
感觉你的这个写的挺不错的,想参考这个写个java版的,但有些地方不是很懂,方便留个联系方式沟通下吗?谢谢🙏
河北省邢台市襄都区
识别不到区(130502,襄都区)
河北省邢台市信都区
识别不到区
河北省邢台市任泽区
识别不到区
黑龙江省伊春市伊美区
识别不到区
黑龙江省伊春市乌翠区
识别不到区
黑龙江省伊春市汤旺县
识别不到区
黑龙江省伊春市丰林县
识别不到区
黑龙江省伊春市大箐山县
识别不到区
黑龙江省伊春市金林区
识别不到区
这个地址江苏省靖江市江阴经济开发区靖江园区五星村里面的江阴经济开发区好像未能识别到details里。这个有办法优化吗
"广东省 东莞市 东城街道 "这个地址识别有误,识别为"广东省 东莞市 东城区" 应该是地址数据没有更新导致的
如何导入Type Script?
广东省惠来县惠城镇南门西路209号
惠来县是揭阳的,识别到惠州了
镇的code是最新的吗 ?
php java python 通过服务请求解析的。
他们使用的是 北京市 市辖区 这种处理方式 数据格式能统一吗 ?
18112341234 上海奉贤区南桥镇程普路123号上海可通营业部 朱某某
苏州工业园区 解析行政区划编码是 320590 但是正确的编码是 320571 麻烦更新一下
直接引入bundle.js是直接报错的
我是在项目给出的测试页面直接测试的。用到的文本是 “一段用于测试地址解析的文本,成都高新区吉泰路xxx号。后面的文本是用于结尾断字测试”,这样测试的结果省市县是正确的,但是details里面会把详细地址后面的那些文字全部追加进去,就成了“吉泰路xxx号 后面的文本是用于结尾断字测试”.正确的话应该是“吉泰路xxx号”。请作者有空的话看看吧。最后。感谢作者分享
新增一个Option 可以parse 后不智能修改地址信息,可以保持原地址内容不变
parse后的地址后新增一个隐私号码的域及隐私号码分机号的域,可以parse地址信息中的隐私号码
例如:
张三[7839]
18412348075
上海市上海市浦东新区 周xxxxxx弄 海xx苑[7839]
结果为:
...
name:张三
....
details: 周xxxxxx弄 海xx苑
mobile: 18412348075
privacy: true
privacy_number: 7839
...
示例:
1、佛山市南海区盐步,穗盐路景裕嘉园1期,13609770999,大旋仔
2、佛山市南海区盐步 穗盐路景裕嘉园1期 13609770999 大旋仔
parse-area.js文件中121行
let shortProvince = index > -1 ? '' : ParseArea.ProvinceShort[code];
是不是应该写成这样的啊 @@查找到对应的省份应该返回对应的省份缩略名,源码中刚好相反
let shortProvince = index > -1 ? ParseArea.ProvinceShort[code] : '' ;
@akebe
可以在封装一下, 在返回地址信息的时候,将对应的省市区 code都进行返回吗?目前只有一个区code
广东省 深圳市 宝安区 西乡街道 解析这个地址时候会有错误
这个可以正确识别:北京市朝阳区富康路姚家园3楼马云15000000000
这个不行,无法解析到name:广西南宁良庆区五象航洋城38楼马云15000000000
如果 直辖市 详细地址出现和省市同样的名字 比如重庆市永川区南大街街道重庆文理学院 或者 北京市海淀区某个地方北京的大学 ,
原文:
1.北京市密云区花园小区1楼三单元301
15801691123 唐娜明收
结果:
[
{
"province":"北京",
"city":"北京市",
"area":"密云区",
"details":"花园小区1楼三单元30 3 唐娜明收",
"name":"1.",
"code":"110118",
"__type":"parseByProvince",
"__parse":true,
"mobile":"11580169112",
"zip_code":"",
"phone":""
}
]
江西上饶市广信区华坛山镇
识别不到“广信区”
你好,我是收货地址智能解析
https://github.com/pupuk/address-smart-parse 的作者
我在看您js的代码的时候,发现有些地方参考了我的代码
谢谢你觉得我的代码还不错
麻烦你在你项目的readme中,添加一下我的项目参考链接
后续我也会这个小项目持续改进
还望你能够理解
只能识别“省市”,无法识别到“区”(梅里斯达斡尔族区)
四川成都高新区天府大道中段530号东方希望天祥广场a座4302号北京万商天勤(成都)律师事务所,这个地址有一个北京就识别不出四川和成都了
能加个微信吗大佬,想向您学习学习,我的微信号:wenzixuan0429
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.