已知一個元素,在一個list中找出近似值, 模糊匹配
阿新 • • 發佈:2019-01-05
已知一個元素,在一個list中找出相似的元素
- 使用場景:
已知一個其它來源的字串, 它有可能是不完全與我資料庫中相應的字串匹配的,因此,我需要將其轉為適合我資料庫中的字串 - 使用場景太繞了, 直接舉例來說吧
隨便舉例:
按青島城市的城區來說,
我資料庫中儲存的城區是個list:['市北區', '市南區', '萊州市', '四方區']
等
從其它的資料來源得到一個城區是:市北
我怎麼得到與市北
相似相近的市北區
解決方案:
In [1]: import difflib
In [2]: cityarea_list = ['市北區', '市南區', '萊州市', '四方區' ]
# 正常情況下,我是這麼用的
In [3]: a = difflib.get_close_matches('市北',cityarea_list,1, cutoff=0.7)
In [4]: a
Out[4]: ['市北區']
# 測試關鍵字改為市區,且要求返回相似度最高的兩個元素
In [5]: a = difflib.get_close_matches('市區',cityarea_list,2, cutoff=0.7)
In [6]: a
Out[6]: ['市南區', '市北區']
# 測試關鍵字改為市區, 要求返回相似度最高的一個元素
In [7]: a = difflib.get_close_matches( '市區',cityarea_list,1, cutoff=0.7)
In [8]: a
Out[8]: ['市南區']
詳解:
difflib
是python 自帶的一個方法- 返回的結果是個list
- 返回的list元素數量是可控的,
cutoff
引數是0到1的浮點數, 可以除錯模糊匹配的精度,一般為0.6就可以了, 1為精確匹配,