首页 > 解决方案 > 将连续重复的字符串转换为已知单词

问题描述

我正在尝试将具有连续重复字符的字符串转换为它的“字典”单词。例如,“aaawwesome”应转换为“awesome”。

我遇到的大多数答案要么删除了所有重复项(例如,“站”将转换为“站”),或者使用 删除了所有连续的重复项itertools.groupby(),但这不考虑诸如“快乐”之类的情况将转换为“快乐”。

我也尝试过使用与 的字符串交集Counter(),但是这忽略了字母的顺序,因此 'botaniser' 和 'baritones' 会不正确地匹配。

在我的具体情况下,我有一些单词列表:

list_1 = ["wife", "kid", "hello"]
list_2 = ["husband", "child", "goodbye"]

并且,给定一个新单词,例如“hello”,我想检查它是否可以简化为任何单词,如果可以,将其替换为该单词。

标签: python

解决方案


使用附魔模块,您可能需要使用 pip 安装它

查看哪些字母重复,从单词中删除该字母,直到该单词出现在英语词典中。

import enchant
d = enchant.Dict("en_US")
list_1 = ["wiffe", "kidd", "helllo"]

def dup(x):
    for n,j in enumerate(x):
        y = [g for g,m in enumerate(x) if m==j]
        for h in y:
            if len(y)>1 and not d.check(x) :
                x = x[:h] + x[h+1:]
                return x

list_1 = list(map(dup,list_1))

print(list_1)

>>> ['wife', 'kid', 'hello']


推荐阅读