如何解决从列表中查找最接近的字符串匹配
我想对不正确的用户输入进行故障排除。 这正是从“数据库”中找到最接近的匹配项。
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
根据来自 user_input
的值保存来自 database
的单词的最接近匹配:
[['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'],[]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。