python 已知一個字符,在一個list中找出近似值或相似值實現(xiàn)模糊匹配
已知一個元素,在一個list中找出相似的元素
使用場景:
已知一個其它來源的字符串, 它有可能是不完全與我數(shù)據(jù)庫中相應(yīng)的字符串匹配的,因此,我需要將其轉(zhuǎn)為適合我數(shù)據(jù)庫中的字符串
使用場景太繞了, 直接舉例來說吧
隨便舉例:
按青島城市的城區(qū)來說,
我數(shù)據(jù)庫中存儲的城區(qū)是個list:['市北區(qū)', '市南區(qū)', '萊州市', '四方區(qū)']等
從其它的數(shù)據(jù)來源得到一個城區(qū)是:市北
我怎么得到與市北相似相近的市北區(qū)
解決方案:
In [1]: import difflib
In [2]: cityarea_list = ['市北區(qū)', '市南區(qū)', '萊州市', '四方區(qū)']
# 正常情況下,我是這么用的
In [3]: a = difflib.get_close_matches('市北',cityarea_list,1, cutoff=0.7)
In [4]: a
Out[4]: ['市北區(qū)']
# 測試關(guān)鍵字改為市區(qū),且要求返回相似度最高的兩個元素
In [5]: a = difflib.get_close_matches('市區(qū)',cityarea_list,2, cutoff=0.7)
In [6]: a
Out[6]: ['市南區(qū)', '市北區(qū)']
# 測試關(guān)鍵字改為市區(qū), 要求返回相似度最高的一個元素
In [7]: a = difflib.get_close_matches('市區(qū)',cityarea_list,1, cutoff=0.7)
In [8]: a
Out[8]: ['市南區(qū)']
詳解:
difflib是python 自帶的一個方法
返回的結(jié)果是個list
返回的list元素數(shù)量是可控的,
cutoff參數(shù)是0到1的浮點數(shù), 可以調(diào)試模糊匹配的精度,一般為0.6就可以了, 1為精確匹配,
補充拓展:python列表進行模糊查詢
先看一下代碼
a=['時間1', '時間2', '時間3', 'ab','asds']
dd = [i for i,x in enumerate(a) if x.find('s')!=-1]
print(dd)
需要注意的是這個方法只適合與都是字符串的,因為find是字符串重的方法, 如果list中有數(shù)字和None,都是不行的
以上這篇python 已知一個字符,在一個list中找出近似值或相似值實現(xiàn)模糊匹配就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?requests下載文件的幾種常用方法(附代碼)
這篇文章主要介紹了五種下載方式的實現(xiàn)方法,包括基礎(chǔ)下載、大文件分塊下載、帶有斷點續(xù)傳的下載、帶有超時和重試的下載以及完整的下載器實現(xiàn),文中給出了詳細的代碼示例,需要的朋友可以參考下2025-03-03
GPU排隊腳本實現(xiàn)空閑觸發(fā)python腳本實現(xiàn)示例
有的服務(wù)器是多用戶使用,GPU的資源常常被占據(jù)著,很可能在夜間GPU空閑了,但來不及運行自己的腳本。如果沒有和別人共享服務(wù)器的話,自己的多個程序想排隊使用GPU,也可以用這個腳本2021-11-11
Django網(wǎng)絡(luò)框架之創(chuàng)建虛擬開發(fā)環(huán)境操作示例
這篇文章主要介紹了Django網(wǎng)絡(luò)框架之創(chuàng)建虛擬開發(fā)環(huán)境操作,簡單描述了虛擬開發(fā)環(huán)境的概念、功能,并分析了使用venv與virtualenv安裝虛擬環(huán)境相關(guān)操作技巧,需要的朋友可以參考下2019-06-06

