Python制作的Tries树查找地址中包含的省份
来源:互联网 发布:哈尔滨数据开放 编辑:程序博客网 时间:2024/06/05 18:52
class Trie:root={}END='/'def add_province(self,word):node=self.rootfor c in word:if c=='省':node[self.END]='省'elif c=='自':node[self.END]='自治区'breakelse:node=node.setdefault(c,{})def find_province(self,word):node=self.root#flag为前置flag,bflag为后置flagfflag=0bflag=0province=[]for c in word:#假设flag不为0,代表找到省份的第一个关键字。假设此时节点包含结束字符,则定义bflag=1,读取下一个字符if fflag!=0 and self.END in node:#定义后向查找标识,排除陕西南路之类的情况if re.search('路|街|岸|道|苑|侧|镇|园|区|第|村|坡|乡|项|里',c) is not None:province=[]fflag=0node=self.root continueelse bflag<2:bflag=bflag+1continueelse return ''.join(province)#假设bflag==1,表明已经找到一次省份。第一次后后续匹配找到省份名称,设flag=1,存储省份名称,继续后一级查找elif c in node:fflag=1province.append(c)node=node[c]#在地址中逐字查找是否有省份的第一个关键字,直到找到,flag标为1,否则0elif c not in node:if fflag==0:continue#假如第一次找的不匹配,但该关键字在根节点属于省份的第一个字符,则清空已经找到的省名,把第一个字符读入省名,flag置为1,并读入第二个省名字符。否则,flag重新标为0,返回根节点查找省名。elif c in self.root:province=[]fflag=1province.append(c)node=self.root[c]continueelse:province=[]fflag=0node=self.rootcontinue#假如遍历完毕,找到第一个省份字符且当前字符为地址的最后一个字符(地址中只有省份名称也没出现“省”字的特殊情况)if fflag!=0 and self.END in node:return ''.join(province)return False
阅读全文
0 0
- Python制作的Tries树查找地址中包含的省份
- Python查找文件中包含中文的行
- python 获取省份的天气预报
- 主要省份城市的DNS服务器地址
- 要省份城市的DNS服务器地址
- 主要省份城市的DNS服务器地址
- 主要省份城市的DNS服务器地址
- 主要省份城市的DNS服务器地址
- 主要省份城市的DNS服务器地址
- eclipse中查找包含汉字的文件
- 查找文件名中包含字符的文件
- 另外一种版本的Java 版本Tries树结构
- python实现查找文件名包含指定字符串的文件
- 全国主要省份城市的DNS服务器地址
- 国主要省份城市的DNS服务器地址
- 全国主要省份城市的DNS服务器地址
- 国主要省份城市的DNS服务器地址
- 中国主要省份城市的DNS服务器地址
- Android图文混排实现方式详解
- Vim编辑器的使用
- Shiro身份认证
- php中常见的几种设计模式
- react native 添加启动页并解决启动白屏问题
- Python制作的Tries树查找地址中包含的省份
- [Android] Android绘制文本基本概念之- top, bottom, ascent, descent, baseline
- Android TV开发经验总结---控件Gridview使用
- Redis超级新手指南-上篇(福禄篇)
- SSL证书的总结
- Struts2学习总结(一)
- [Android] Android零碎知识点
- Android小控件AppWidgetProvider
- C++ 对象的内存布局(上)