Python|从列表中查找输入字符串的所有紧密匹配项
我们得到一个模式字符串列表和一个输入字符串。我们需要在模式字符串列表中找到输入字符串的所有可能的足够好的匹配。
例子:
Input : patterns = ['ape', 'apple',
'peach', 'puppy'],
input = 'appel'
Output : ['apple', 'ape']
我们可以使用内置函数difflib.get_close_matches()在Python中快速解决这个问题。
difflib.get_close_matches()函数在Python中如何工作?
difflib.get_close_matches(word,可能性, n, cutoff)接受四个参数,其中n, cutoff是可选的。 word是需要紧密匹配的序列,可能性是要匹配 word 的序列列表。可选参数n(默认 3)是要返回的最大匹配数,n 必须大于 0。可选参数cutoff(默认 0.6)是 [0, 1] 范围内的浮点数。得分至少与单词相似的可能性将被忽略。
在一个列表中返回可能性中最好的(不超过 n 个)匹配,按相似度得分排序,最相似的在前。
# Function to find all close matches of
# input string in given list of possible strings
from difflib import get_close_matches
def closeMatches(patterns, word):
print(get_close_matches(word, patterns))
# Driver program
if __name__ == "__main__":
word = 'appel'
patterns = ['ape', 'apple', 'peach', 'puppy']
closeMatches(patterns, word)
参考资料: https://docs。 Python.org/2/library/difflib.html
输出:
['apple', 'ape']