删除由重复字母组成的单词

问题描述 投票:0回答:1

我有一个包含文本数据的数据框列。它几乎没有用重复字母组成的单词,而很少有其他单词具有重复字母。我希望删除由完全重复的字母组成的单词,并在数据帧列中保留第一次出现的字母(如果重复字母的计数大于2)。这该怎么做?例如,如果我的数据框有像 -

id   text
1     aaaa
2     bb
3     wwwwwwww
4     helloooo
5     see youuuu 

输出应该是 -

id   text
1     
2     
3    
4    hello
5    see you 
python regex nlp text-processing
1个回答
1
投票

这可能不是特别优雅,可能不是很快,但它的工作原理。我希望它足以满足您的需求。

您生成一个函数,根据您的需要对字符串进行排序,然后使用pandas映射将其应用于您的所有元素,因此:

def clean(string):
    if (len(string)==0):
        return ''
    if (set(string) == set(string[0])):
        return ''    
    prev = None
    letters = [l for l in string]
    counter = 1
    new = []
    for l in letters:
        if l==prev:
            counter+=1
        else:
            if (counter==2):
                new.append(prev)
            counter=1
            new.append(l)
            prev = l
    return ''.join(new)

然后你可以这样做:

df['text'] = df['text'].fillna('').map(clean)

简而言之,首先检查一个字母中的整个字符串(set只保留唯一元素)。然后你开始迭代所有字母,跳过重复,但保持重复字母的计数。最后,当重复序列完成时,仅当重复次数恰好为2时才添加一个副本。

我测试了这个并得到了预期的结果,但如果你遇到某些情况我遇到问题我没想到检查,请告诉我,我会修复它。

© www.soinside.com 2019 - 2024. All rights reserved.