如果你有一个python的dictionary,我假设你的键是唯一的。但是,您可能有类似于EDEDBGZH的单词,那么我们是否应该替换源单词中的所有出现的内容?在
不管怎样,我想@avinasraj的回答足够好了,但我要扩展一下。在
让我们有一个“替换”词,TESTZH。如果您想在字典中找到最接近的匹配项,可以使用单词距离函数进行搜索。例如,Levenshtein's distance。它为单词设置了一些标准,与另一个很相似。因此,例如,单词winter和linter将比winter和{}更接近,而比winter和{}更接近。在
以下是Levenshtein距离函数的代码:def lev(s1, s2, l1 = None, l2 = None):
if l1 == None:
l1 = len(s1)
if l2 == None:
l2 = len(s2)
if l1 == 0:
return l2
elif l2 == 0:
return l1
if (s1[l1 - 1] == s2[l2 - 1]):
cost = 0
else:
cost = 1
return min([
lev(s1, s2, l1 - 1, l2) + 1,
lev(s1, s2, l1, l2 - 1) + 1,
lev(s1, s2, l1 - 1, l2 - 1) + cost
])
还有一些样品:
^{pr2}$
以下是使用Levenshtein的距离函数在字典中搜索的代码:dictionary = { 'winter': 'zima', 'spring': 'wiosna', 'summer': 'lato', 'autumn': 'jesień', 'Poland': 'Polska' }
search_for = 'wintr'
similars = { k: dictionary[k] for k in filter(lambda x: lev(x, search_for) <= 3, dictionary.keys()) }
以及示例运行:>>> words similar to `wintr`: {'winter': 'zima'}
希望这有帮助!在