Python 为什么不是';t Levenshtein.还有什么吗?
我有以下python函数:Python 为什么不是';t Levenshtein.还有什么吗?,python,levenshtein-distance,Python,Levenshtein Distance,我有以下python函数: import Levenshtein SENTINEL = -1 def findClosestMatch(sampleElemList, convertElem, error): matchIndividualElem = False lowestLevDistance = SENTINEL closestMatchingString = '' for sampleElem in sampleElemList:
import Levenshtein
SENTINEL = -1
def findClosestMatch(sampleElemList, convertElem, error):
matchIndividualElem = False
lowestLevDistance = SENTINEL
closestMatchingString = ''
for sampleElem in sampleElemList:
if sampleElem.text == convertElem.text:
matchIndividualElem = True
break
sampleDistance = Levenshtein.distance(sampleElem.text, convertElem.text)
if sampleDistance < lowestLevDistance or lowestLevDistance == SENTINEL:
lowestLevDistance = sampleDistance
closestMatchingString = sampleElem.text
if matchIndividualElem == False and convertElem.text != None:
safeErrString = convertElem.text.encode('utf-8')
error.write('The following text could not be matched: \'' + safeErrString + '\'. The closest text is: ' + closestMatchingString + \
' with a Levenshtein distance of ' + str(lowestLevDistance) + '.\n\n')
return 1
return 0;
该功能包含在一个程序中,该程序以前显示功能良好。它返回1或0,以添加到迄今为止在列表中发现的所有不匹配项中
程序编译时没有警告,程序的其余部分按其预期的方式运行。但是,错误文件始终读取:“无法匹配以下文本:“”,Levenshtein距离为-1
函数应该总是输出一些东西,只要“sampleElemList”中存在一个元素,我知道这是真的。我调用库的方式有问题吗?这是安装的问题吗?或者它完全是另一回事?我在构建的应用程序中也遇到了Python Levenshtein包的问题,因此我找到了它的公共域实现,并将其放在实用程序模块中。如果您不需要包中的额外函数,我建议您也这样做。你可以找到它的源代码(公共域)。当你得到不想要的输出时,你能显示你正在输入什么吗?您可以尝试改用(
sudo pip install distance
)或编写自己的Levenshtein distance函数。该用法/函数可能存在错误。。需要进一步诊断。可能应该注意有关“”文本的消息。还请注意,这一行:如果sampleDistance
最初将计算为True
,因为在顶部,您将lowestlevdance
设置为SENTINEL
。在我构建的应用程序中,我也遇到了Python Levenshtein包的问题,所以我刚刚找到了它的公共域实现,并将其放在实用程序模块中。如果您不需要包中的额外函数,我建议您也这样做。你可以找到它的源代码(公共域)。当你得到不想要的输出时,你能显示你正在输入什么吗?您可以尝试改用(sudo pip install distance
)或编写自己的Levenshtein distance函数。该用法/函数可能存在错误。。需要进一步诊断。可能应该注意有关“”文本的消息。还请注意,这一行:如果sampleDistance
最初将计算为True
,因为在顶部您将lowestLevDistance
设置为SENTINEL
。
sudo pip install python-Levenshtein