比较python中的字符串以查找错误

Har*_*rry 2 python string-comparison

我有一个字符串,是一个单词的正确拼写:

FOO
Run Code Online (Sandbox Code Playgroud)

我会允许某些人以这种方式错误地输入这个词:

FO, F00, F0O ,FO0
Run Code Online (Sandbox Code Playgroud)

有没有一个很好的方法来检查这个?小写也应视为正确,或转换为大写.什么是最漂亮的.

Mar*_*ers 6

一种方法是计算字符串之间的编辑距离.例如,您可以使用Levenshtein距离,或发明自己的距离函数,该函数将0和O视为比0和P更接近.

另一种方法是将每个单词转换为规范形式,并比较规范形式.例如,您可以将字符串转换为大写,将所有0替换为Os,将1替换为Is等,然后删除重复的字母.

>>> import itertools
>>> def canonical_form(s):
        s = s.upper()
        s = s.replace('0', 'O')
        s = s.replace('1', 'I')
        s = ''.join(k for k, g in itertools.groupby(s))
        return s
>>> canonical_form('FO')
'FO'
>>> canonical_form('F00')
'FO'
>>> canonical_form('F0O')
'FO'
Run Code Online (Sandbox Code Playgroud)