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

2024-04-24 09:18:24 发布

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

我有一个包含文本数据的dataframe列。它几乎没有完全由重复字母组成的单词,也很少有其他单词具有部分重复字母。我想删除由完全重复的字母组成的单词,在其他情况下(如果重复字母的计数大于2),只保留第一次出现的字母在dataframe列中。怎么做?例如,如果我的数据帧中有-

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

输出应为-

^{pr2}$

Tags: 数据text文本iddataframe字母情况单词
1条回答
网友
1楼 · 发布于 2024-04-24 09:18:24

这可能不是特别优雅,也可能不是很快,但它是有效的。我希望它足够满足你的需要。在

生成一个函数,根据需要对字符串进行排序,然后使用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)

然后你可以:

^{pr2}$

简单地说,首先检查整个字符串是否在一个字母中(set只保留唯一的元素)。然后开始迭代所有的字母,跳过重复的字母,但要计算重复的字母。最后,当一个重复序列完成后,只有当重复次数正好是2时,才可以再添加一个副本。在

我测试了这个,得到了预期的结果,但是如果你确实遇到了一些我没有想到检查的问题,请告诉我,我会解决它。在

相关问题 更多 >