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

2024-09-29 19:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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将结果添加到列表中的方法


Tags: 用户数据库inputmatch错误databasecat故障
1条回答
网友
1楼 · 发布于 2024-09-29 19:25:15

实现这一点的更简单方法是使用列表理解

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'], [], []]
   

相关问题 更多 >

    热门问题