1. 程式人生 > >已知一個元素,在一個list中找出相似的元素, 模糊匹配

已知一個元素,在一個list中找出相似的元素, 模糊匹配

已知一個元素,在一個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]: ['市南區']

詳解:

  1. difflib是python 自帶的一個方法
  2. 返回的結果是個list
  3. 返回的list元素數量是可控的,
  4. cutoff引數是0到1的浮點數, 可以除錯模糊匹配的精度,一般為0.6就可以了, 1為精確匹配,