如果我有一个'饥饿'这个词我有一个像这样的清单 ['asdfd', 'hingry', 'hungre', ' hangrr']
我怎么能得到'hingry'和'hungre',因为他们是一个角色?我想过使用正则表达式,但我在python中使用它并不是很有经验
你可以使用itertools.zip_longest和sum:
from itertools import zip_longest as _zip
d = ['asdfd', 'hingry', 'hungre', ' hangrr']
word = 'hungry'
results = [i for i in d if sum(a == b for a, b in _zip(i, word)) >= len(word)-1]
Run Code Online (Sandbox Code Playgroud)
输出:
['hingry', 'hungre']
Run Code Online (Sandbox Code Playgroud)
安装后python-levenshtein,很容易:
>>> from Levenshtein import distance
>>> distance( 'hingry', 'hungry')
1
>>> distance( 'hungre', 'hungry')
1
>>> distance( 'hungr', 'hungry')
1
Run Code Online (Sandbox Code Playgroud)
它会自动处理:
最终代码可能如下所示:
>>> words = ['asdfd', 'hingry', 'hungre', ' hangrr']
>>> [w for w in words if distance( 'hungry', w) < 2]
['hingry', 'hungre']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |