python 已知一個(gè)字符,在一個(gè)list中找出近似值或相似值實(shí)現(xiàn)模糊匹配
已知一個(gè)元素,在一個(gè)list中找出相似的元素
使用場(chǎng)景:
已知一個(gè)其它來(lái)源的字符串, 它有可能是不完全與我數(shù)據(jù)庫(kù)中相應(yīng)的字符串匹配的,因此,我需要將其轉(zhuǎn)為適合我數(shù)據(jù)庫(kù)中的字符串
使用場(chǎng)景太繞了, 直接舉例來(lái)說(shuō)吧
隨便舉例:
按青島城市的城區(qū)來(lái)說(shuō),
我數(shù)據(jù)庫(kù)中存儲(chǔ)的城區(qū)是個(gè)list:['市北區(qū)', '市南區(qū)', '萊州市', '四方區(qū)']等
從其它的數(shù)據(jù)來(lái)源得到一個(gè)城區(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ū)'] # 測(cè)試關(guān)鍵字改為市區(qū),且要求返回相似度最高的兩個(gè)元素 In [5]: a = difflib.get_close_matches('市區(qū)',cityarea_list,2, cutoff=0.7) In [6]: a Out[6]: ['市南區(qū)', '市北區(qū)'] # 測(cè)試關(guān)鍵字改為市區(qū), 要求返回相似度最高的一個(gè)元素 In [7]: a = difflib.get_close_matches('市區(qū)',cityarea_list,1, cutoff=0.7) In [8]: a Out[8]: ['市南區(qū)']
詳解:
difflib是python 自帶的一個(gè)方法
返回的結(jié)果是個(gè)list
返回的list元素?cái)?shù)量是可控的,
cutoff參數(shù)是0到1的浮點(diǎn)數(shù), 可以調(diào)試模糊匹配的精度,一般為0.6就可以了, 1為精確匹配,
補(bǔ)充拓展:python列表進(jìn)行模糊查詢(xún)
先看一下代碼
a=['時(shí)間1', '時(shí)間2', '時(shí)間3', 'ab','asds'] dd = [i for i,x in enumerate(a) if x.find('s')!=-1] print(dd)
需要注意的是這個(gè)方法只適合與都是字符串的,因?yàn)閒ind是字符串重的方法, 如果list中有數(shù)字和None,都是不行的
以上這篇python 已知一個(gè)字符,在一個(gè)list中找出近似值或相似值實(shí)現(xiàn)模糊匹配就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中copy()與deepcopy()的區(qū)別小結(jié)
接觸python有一段時(shí)間了,一直沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò),也對(duì)copy,deepcoy傻傻的分不清,故抽出時(shí)間來(lái)理一下。 下面這篇文章主要給大家介紹了關(guān)于python中copy()與deepcopy()的區(qū)別的相關(guān)資料,需要的朋友可以參考下2018-08-08Python數(shù)據(jù)分析中常見(jiàn)統(tǒng)計(jì)方法詳解
數(shù)據(jù)分析是現(xiàn)代社會(huì)中不可或缺的一部分,通過(guò)對(duì)數(shù)據(jù)的統(tǒng)計(jì)和分析,我們可以得出有用的信息和見(jiàn)解,本文將介紹在?Python?中常見(jiàn)的數(shù)據(jù)統(tǒng)計(jì)方法,希望對(duì)大家有所幫助2024-02-02詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號(hào)
這篇文章主要介紹了詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號(hào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息
這篇文章主要介紹了python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息示例,需要的朋友可以參考下2014-04-04解決Tensorflow sess.run導(dǎo)致的內(nèi)存溢出問(wèn)題
今天小編就為大家分享一篇解決Tensorflow sess.run導(dǎo)致的內(nèi)存溢出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息
這篇文章主要介紹了Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python Http請(qǐng)求json解析庫(kù)用法解析
這篇文章主要介紹了Python Http請(qǐng)求json解析庫(kù)用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11python制作websocket服務(wù)器實(shí)例分享
websocket是一個(gè)瀏覽器和服務(wù)器通信的新的協(xié)議,websocket則和一般的socket一樣,使得瀏覽器和服務(wù)器建立了一個(gè)雙工的通道。今天我們就來(lái)詳細(xì)探討下使用Python實(shí)現(xiàn)websocket服務(wù)器的具體方法2016-11-11Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明
這篇文章主要介紹了Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03