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 将结果添加到列表中。
解决方案
实现这一点的更简单方法是使用列表理解:
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]
where根据来自以下的值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'], ['cat'], ['dog'], [], []]
推荐阅读
- python - 在字符串中查找多个字符:python3
- java - 我试图找到定义为数字的对象的总和
- javascript - 为什么我编辑了一段时间后,Neovim 开始在我的文件中插入标签?
- javascript - 查找包含值的嵌套对象
- java - Spring boot jpa/hibernate 遇到列类型错误(json字段)
- python - Input as object python 3
- ruby - 无法在 ruby 中生成 RSA 公钥
- akka - Akka - 了解演员模型
- c# - 将值标准化为 -1 和 1 之间的范围
- javascript - 在 JSON 中搜索值并返回到控制台