从列表中查找最接近的字符串匹配
Find closest string match from list
我想解决用户输入不正确的问题。
就是从“数据库”中找到最接近的匹配。
database = ["dog", "cat", "bird"]
user_input = ["dog", "ccat", "ddogg", "horse", "fish"]
for i in user_input:
match = difflib.get_close_matches('i', words)
match
但是我得到一个空列表。
这个问题有什么简单的解决办法吗?我在任何地方都找不到如何使用 difflib 将结果添加到列表中。
更简单的方法是使用列表理解:
import difflib
database = ["dog", "cat", "bird"]
user_input = ["dog", "ccat", "ddogg", "horse", "fish"]
new_list = [difflib.get_close_matches(word, database) for word in user_input]
其中 new_list
根据 database
中的值保存与 user_input
中单词最接近的匹配项:
[['dog'], ['cat'], ['dog'], [], []]
您的代码存在问题,您将 i
作为字符串 'i'
传递给 get_close_matches
函数。将其作为变量传递,然后将 match
单词附加到列表中。例如,这里是代码的工作版本:
new_list = []
for i in user_input:
match = difflib.get_close_matches(i, database)
# ^ don't pass this as string
new_list.append(match)
# new_list: [['dog'], ['cat'], ['dog'], [], []]
我想解决用户输入不正确的问题。 就是从“数据库”中找到最接近的匹配。
database = ["dog", "cat", "bird"]
user_input = ["dog", "ccat", "ddogg", "horse", "fish"]
for i in user_input:
match = difflib.get_close_matches('i', words)
match
但是我得到一个空列表。 这个问题有什么简单的解决办法吗?我在任何地方都找不到如何使用 difflib 将结果添加到列表中。
更简单的方法是使用列表理解:
import difflib
database = ["dog", "cat", "bird"]
user_input = ["dog", "ccat", "ddogg", "horse", "fish"]
new_list = [difflib.get_close_matches(word, database) for word in user_input]
其中 new_list
根据 database
中的值保存与 user_input
中单词最接近的匹配项:
[['dog'], ['cat'], ['dog'], [], []]
您的代码存在问题,您将 i
作为字符串 'i'
传递给 get_close_matches
函数。将其作为变量传递,然后将 match
单词附加到列表中。例如,这里是代码的工作版本:
new_list = []
for i in user_input:
match = difflib.get_close_matches(i, database)
# ^ don't pass this as string
new_list.append(match)
# new_list: [['dog'], ['cat'], ['dog'], [], []]