要删除所有一个字符的字符串吗?

2024-06-24 13:42:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个单词“饥饿”,我有一个类似['asdfd', 'hingry', 'hungre', ' hangrr']的列表

我怎么能把“欣格里”和“饥饿”去掉呢?我考虑过使用regex,但在python中使用它的经验并不丰富


Tags: 列表经验单词regex饥饿asdfdhingryhungre
2条回答

一旦你安装了python-levenshtein,就很容易了:

>>> from Levenshtein import distance
>>> distance( 'hingry', 'hungry')
1
>>> distance( 'hungre', 'hungry')
1
>>> distance( 'hungr', 'hungry')
1

它自动处理:

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

最后的代码可能如下所示:

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

您可以使用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]

输出:

['hingry', 'hungre']

相关问题 更多 >