我正在寻找一个Python模块,可以做简单的模糊字符串比较。具体来说,我想知道字符串相似程度的百分比。我知道这是潜在的主观,所以我希望找到一个库,可以做位置比较以及最长的相似字符串匹配,等等。
基本上,我希望找到一些足够简单的东西,可以产生单个百分比,同时仍然可以配置,以便我可以指定要进行哪种类型的比较。
我正在寻找一个Python模块,可以做简单的模糊字符串比较。具体来说,我想知道字符串相似程度的百分比。我知道这是潜在的主观,所以我希望找到一个库,可以做位置比较以及最长的相似字符串匹配,等等。
基本上,我希望找到一些足够简单的东西,可以产生单个百分比,同时仍然可以配置,以便我可以指定要进行哪种类型的比较。
当前回答
谷歌也有自己的Google -diff-match-patch(“目前在Java, JavaScript, c++和Python中可用”)。
(不能评论它,因为我自己只使用python的difflib)
其他回答
谷歌也有自己的Google -diff-match-patch(“目前在Java, JavaScript, c++和Python中可用”)。
(不能评论它,因为我自己只使用python的difflib)
看一下Fuzzy模块。它具有基于soundex、NYSIIS和双变音位的快速(用C编写)算法。
好的介绍可以在http://www.informit.com/articles/article.aspx?p=1848528上找到
我用的是双变音位,就像一个咒语。
一个例子:
>>> dm(u'aubrey')
('APR', '')
>>> dm(u'richard')
('RXRT', 'RKRT')
>>> dm(u'katherine') == dm(u'catherine')
True
更新: 水母也有。在语音编码下。
Difflib可以做到。
文档中的例子:
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
>>> import keyword
>>> get_close_matches('wheel', keyword.kwlist)
['while']
>>> get_close_matches('apple', keyword.kwlist)
[]
>>> get_close_matches('accept', keyword.kwlist)
['except']
来看看。它还有其他功能,可以帮助您定制一些东西。
我一直在用座位极客的Fuzzy Wuzzy,而且非常成功。
https://github.com/seatgeek/fuzzywuzzy
具体来说,令牌集比率函数…
他们还写了一篇关于模糊字符串匹配过程的文章:
http://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python