在python中是否有这种字符串匹配方法的实现?

时间:2011-03-04 10:04:01

标签: python string fuzzy-search fuzzy-comparison

我正在尝试使用近似字符串匹配来计算出我的数据存储中的哪些条目几乎是重复的。

在python中是否有以下方法的实现,或者我是否需要尝试自己滚动?

谢谢:)

from wikipedia

  

...

     

蛮力的方法是   为所有人计算到P的编辑距离   T的子串,然后选择   具有最小距离的子串。   但是,这个算法会有   运行时间O(n3 m)

     

更好的解决方案[3] [4],利用   动态编程,使用一个   替代配方   问题:对于每个位置j   文本T和每个位置我在   模式P,计算最小编辑   我之间的距离   模式,Pi和任何字符   子串Tj',T的T结束于   职位j。

将此应用于多个字符串的最有效方法是什么?

4 个答案:

答案 0 :(得分:1)

是。

google("python levenshtein")

答案 1 :(得分:1)

difflib.get_close_matches应该做的工作。

答案 2 :(得分:0)

difflib可能就是答案,例如,

from difflib import context_diff

a = 'acaacbaaca'
b = 'accabcaacc'

print ''.join(context_diff(a,b))

答案 3 :(得分:0)

Levenshtein距离与fuzzywuzzy标准比率()函数的表现非常相似。 fuzzywuzzy使用difflib http://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python

来自fuzzywuzzy文档的示例: https://github.com/seatgeek/fuzzywuzzy

fuzz.ratio("this is a test", "this is a test!")
    96