【发布时间】:2015-07-29 05:36:51
【问题描述】:
我正在尝试找到一种方法来匹配两个字符串,以查看它们在 python 中是否匹配或相似。
例子:
from fuzzywuzzy import fuzz
string1 = 'Green apple'
string2 = 'Apple, green'
string3 = 'Green apples - grow on trees'
#Test with Fuzzy Wuzzy
print(fuzz.partial_ratio(string1, string2))
> 50
print(fuzz.partial_ratio(string1, string3))
> 100
print(fuzz.partial_ratio(string2, string3))
> 58
#Testing with DiffLib SequenceMatcher
print(difflib.SequenceMatcher(None, string1, string2).ratio())
> 0.34782608695652173
print(difflib.SequenceMatcher(None, string1, string3).ratio())
> 0.5641025641025641
print(difflib.SequenceMatcher(None, string2, string3).ratio())
> 0.45
在上面的示例中,所有三个字符串都应该相似,因为它们都包含相同的单词 green apple。是否有任何匹配算法可以匹配包含相同单词的字符串,而不管顺序如何,从左到右匹配,并且忽略在找到字符串 1 和字符串 3 等匹配之后出现的单词。
【问题讨论】:
标签: python regex string-matching levenshtein-distance fuzzy-search