FlashText算法可用於大規模替換、檢索文檔中的關鍵字。
本文要介紹的是FlashText算法的python實現模塊。
------------------
0x01 安裝
pip install flashtext
0x02 使用方法
傳統的replace連用:
s = "spamham sha" print s.replace('spam','eggs').replace('sha','md5') # eggmd5m md5
這里的結果是eggsham也被替換成eggmd5m,我們想要一次性替換的話,一般會想到使用re.sub,然而使用正則多次替換字符串的效率很低。
使用flashtext可以提高其替換效率:
from flashtext import KeywordProcessor kp = KeywordProcessor() kws = [ ['spam','eggs'], ['sha','md5'], ] for kw in kws: kp.add_keyword(*kw) s = "spamham sha" print kp.replace_keywords(s) # spamham md5 # kp.non_word_boundaries默認值為[A-Za-z0-9_] # 設置non_word_boundaries kp.set_non_word_boundaries([]) print kp.replace_keywords(s) # eggsham md5
參數也可以從字典里獲取,只不過注意要替換成的字符串是key:
from flashtext import KeywordProcessor kp = KeywordProcessor() kws = { 'eggs':['spam'], 'md5':['sha'], } kp.add_keywords_from_dict(kws) s = "spamham sha" print kp.replace_keywords(s) # spamham md5 # kp.non_word_boundaries默認值為[A-Za-z0-9_] # 設置non_word_boundaries kp.set_non_word_boundaries([]) print kp.replace_keywords(s) # eggsham md5
0x03 其他用法
等pcat有空再更新