获取一个字符的所有字符串?

adr*_*iam 3 python regex

如果我有一个'饥饿'这个词我有一个像这样的清单 ['asdfd', 'hingry', 'hungre', ' hangrr']

我怎么能得到'hingry'和'hungre',因为他们是一个角色?我想过使用正则表达式,但我在python中使用它并不是很有经验

Aja*_*234 6

你可以使用itertools.zip_longestsum:

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)


len*_*nik 5

安装后python-levenshtein,很容易:

>>> from Levenshtein import distance
>>> distance( 'hingry', 'hungry')
1
>>> distance( 'hungre', 'hungry')
1
>>> distance( 'hungr', 'hungry')
1
Run Code Online (Sandbox Code Playgroud)

它会自动处理:

  1. 添加了字符
  2. 删除字符
  3. 替换字符

最终代码可能如下所示:

>>> words = ['asdfd', 'hingry', 'hungre', ' hangrr']
>>> [w for w in words if distance( 'hungry', w) < 2]
['hingry', 'hungre']
Run Code Online (Sandbox Code Playgroud)