微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从列表中查找最接近的字符串匹配

如何解决从列表中查找最接近的字符串匹配

我想对不正确的用户输入进行故障排除。 这正是从“数据库”中找到最接近的匹配项。

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 举报,一经查实,本站将立刻删除。