我喜欢德鲁的答案。
如果您要做的只是测试一个字符串中的所有单词是否都与另一个字符串匹配,那就是一个衬里:
if not [word for word in b.split(' ') if word not in a.split(' ')]:
print 'Match!'
如果您想对它们进行评分而不是对二进制测试进行评分,为什么不这样做:
(((匹配单词的数量)/(大字符串中的单词数量))*((小字符串中的单词数量)/(大字符串中的单词数量))
?
如果愿意,您可以更轻松地对每个字符串进行模糊匹配。
您可以使用difflib查找最长的匹配项:
>>> a = 'The quick brown fox.'
>>> b = 'The quick brown fox jumped over the lazy dog.'
>>> import difflib
>>> s = difflib.SequenceMatcher(None, a, b)
>>> s.find_longest_match(0,len(a),0,len(b))
Match(a=0, b=0, size=19) # returns NamedTuple (new in v2.6)
或选择一些最小匹配阈值。例:
>>> difflib.SequenceMatcher(None, a, b).ratio()
0.61538461538461542