Python 使用difflib查找两个字符串变量之间最接近的匹配

Python 使用difflib查找两个字符串变量之间最接近的匹配,python,string-matching,difflib,Python,String Matching,Difflib,大家好,我想用difflib找到两个字符串变量之间最接近的匹配,这是我的例子 varA = 'plainmountain' varB = 'skymountain' newVarA = 'piaimauntain' 我想difflib在VarA和VarB变量中找到最接近的匹配项它们只是变量,而不是列表,如果我在搜索中添加第三个变量varC会怎么样???如何让difflib找到一个最接近的匹配项 目前我正在尝试这个 varA = 'plaimountain' varB = 'skymounta

大家好,我想用difflib找到两个字符串变量之间最接近的匹配,这是我的例子

varA = 'plainmountain'
varB = 'skymountain'

newVarA = 'piaimauntain'
我想difflib在VarA和VarB变量中找到最接近的匹配项它们只是变量,而不是列表,如果我在搜索中添加第三个变量varC会怎么样???如何让difflib找到一个最接近的匹配项

目前我正在尝试这个

varA = 'plaimountain'
varB = 'skymountain'
varAll = [varA, varB, varC]
newVarA = 'piaimauntain'
我是这样做的

import difflib
d = difflib.Differ()
diff = d.compare(varA, newVarA)
print '\n'.join(diff)
from difflib import SequenceMatcher
result = difflib.get_close_matches(newVarA, varAll, 1, 0.7)
print result
现在我这样做

import difflib
d = difflib.Differ()
diff = d.compare(varA, newVarA)
print '\n'.join(diff)
from difflib import SequenceMatcher
result = difflib.get_close_matches(newVarA, varAll, 1, 0.7)
print result

高级感谢。

如果我理解您的任务,它将有助于:

import difflib

varA = 'plaimountain'
varB = 'piaimauntain'
varC = 'skymountain'
varS = ['piaimauntain','sky','skymountain','dog','231']

#it parse varB by letters
best = difflib.get_close_matches(varA, varB)
print best

best = difflib.get_close_matches(varA, [varB])
print best

best = difflib.get_close_matches(varA, [varB,varC])
print best

best = difflib.get_close_matches(varA, [varB,varS])
print best

请阅读:我会继续编辑这个问题,只要a继续尝试更多的东西。有什么提示吗?谢谢Advanced.hi@zveryansky谢谢,是的,我读了difflib文档,尽管我不能在不创建列表变量的情况下完成此任务,但是没有列表变量可以完成吗?请在您的回答中,我不明白您为什么将varB括在括号[varB]或[varB,varC]或[varB,carS]中,这是为什么?您正在创建一个新列表吗?get_close_matches获取至少2个参数:word和“可能性”是序列列表。如果使用varB函数,则将'plaimountain'与['p','i','a','i','m','a','u','n','t','a','i','n']进行比较。如果您使用[varB],将比较'Plaimoundain'和['Piaimundain']。当我使用[varB]时,我正在制作一个列表,如果您不能使用列表,那么请尝试使用varB,它将是tuple.Hi@zveryansky,但有一个问题,脚本返回['plaimountain',],但我希望得到varA作为结果。我的意思是,我想得到字符串的变量名,它是最匹配的,而不是字符串本身。我该怎么做?我需要创建第二个比较吗?感谢Advanced。我已经尝试使用第二个Comparison,但是我得到了作为列表变量与单个项的最佳匹配,python不允许我将变量与列表变量进行比较,如果我只得到了一个最佳匹配,我希望将其作为字符串,而不是列表项。附近有工作吗?谢谢Advanced.best=difflib.get_close_matchesvarA[varB][0],它将是一个字符串