Python製作的Tries樹查詢位址中包含的省份

2021-08-07 14:45:14 字數 1512 閱讀 2694

class trie:

root={}

end='/'

def add_province(self,word):

node=self.root

for c in word:

if c=='省':

node[self.end]='省'

elif c=='自':

node[self.end]='自治區'

break

else:

node=node.setdefault(c,{})

def find_province(self,word):

node=self.root

#flag為前置flag,bflag為後置flag

fflag=0

bflag=0

province=

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=0

node=self.root

continue

else bflag<2:

bflag=bflag+1

continue

else return ''.join(province)

#假設bflag==1,表明已經找到一次省份。第一次後後續匹配找到省份名稱,設flag=1,儲存省份名稱,繼續後一級查詢

elif c in node:

fflag=1

node=node[c]

#在位址中逐字查詢是否有省份的第乙個關鍵字,直到找到,flag標為1,否則0

elif c not in node:

if fflag==0:

continue

#假如第一次找的不匹配,但該關鍵字在根節點屬於省份的第乙個字元,則清空已經找到的省名,把第乙個字元讀入省名,flag置為1,並讀入第二個省名字元。否則,flag重新標為0,返回根節點查詢省名。

elif c in self.root:

province=

fflag=1

node=self.root[c]

continue

else:

province=

fflag=0

node=self.root

continue

#假如遍歷完畢,找到第乙個省份字元且當前字元為位址的最後乙個字元(位址中只有省份名稱也沒出現「省」字的特殊情況)

if fflag!=0 and self.end in node:

return ''.join(province)

return false

樹目錄選單的製作

製作方法 第一步 嵌入 把下面這段 複製到 標籤之間。第二步 製作選單。將 插入到頁面中要出現樹形目錄的地方。下面是一段 範例 如果我們仔細分析一下的話不難發現製作列表的秘訣就是乙個大的列表 主目錄名稱 對應位址 子目錄名稱 對應位址 子目錄名稱 對應位址 子目錄名稱 這樣的好處是新增子選單非常容易...

利用樹製作的簡易家譜

ifndef parentschildren h included define parentschildren h included include include define maxsize 100 typedef struct anode arcnode typedef struct jdd...

python 製作小蛇

coding utf 8 import turtle def drawsnake rad,angle,len,neckrad rad,描述圓形軌跡半徑的位置 for i in range len angle表示小烏龜沿著圓形爬行的弧度值 turtle.circle rad,angle turtle....