python3正则表达式匹配中文_python3正则表达式匹配字典中的单词

如果你有一个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'}

希望这有帮助!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值