Har*_*rry 2 python string-comparison
我有一个字符串,是一个单词的正确拼写:
FOO
Run Code Online (Sandbox Code Playgroud)
我会允许某些人以这种方式错误地输入这个词:
FO, F00, F0O ,FO0
Run Code Online (Sandbox Code Playgroud)
有没有一个很好的方法来检查这个?小写也应视为正确,或转换为大写.什么是最漂亮的.
一种方法是计算字符串之间的编辑距离.例如,您可以使用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)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |