找出两个字符串是否几乎相似

Sal*_*wal 13 python regex string

我想知道你的字符串是否几乎相似.例如,像'Mohan Mehta'这样的字符串应该匹配'Mohan Mehte',反之亦然.另一个例子,像'Umesh Gupta'这样的字符串应该匹配'Umash Gupte'.

基本上一个字符串是正确的,而另一个字符串是错误拼写的.我的所有字符串都是人的名字.

有关如何实现这一目标的任何建议.

解决方案不必100%有效.

Pad*_*ham 20

如果你想要stdlib中的东西,你可以使用difflib.sequencematcher:

from difflib import SequenceMatcher
s_1 = 'Mohan Mehta'
s_2 = 'Mohan Mehte'
print(SequenceMatcher(a=s_1,b=s_2).ratio())
0.909090909091
Run Code Online (Sandbox Code Playgroud)

fuzzywuzzy是您可以安装的众多库中的一个,它使用带有python-Levenshtein的difflib模块.您还应该查看Approximate_string_matching上的wikipage


Ste*_*lla 8

另一种方法是使用" 语音算法 ":

语音算法是用于通过其发音索引单词的算法.

例如,使用soundex算法:

>>> import soundex
>>> s = soundex.getInstance()
>>> s.soundex("Umesh Gupta")
'U5213'
>>> s.soundex("Umash Gupte")
'U5213'
>>> s.soundex("Umesh Gupta") == s.soundex("Umash Gupte")
True
Run Code Online (Sandbox Code Playgroud)