删除由重复字母组成的单词
Remove words made up of repetitive letters
我有一个包含文本数据的数据框列。它很少有完全由重复字母组成的单词,也很少有其他单词部分重复的字母。我想删除由完全重复的字母组成的单词,并在数据框列中保留其他情况下字母的第一次出现(如果重复字母的数量超过 2)。这该怎么做?例如,如果我的数据框有像-
这样的词
id text
1 aaaa
2 bb
3 wwwwwwww
4 helloooo
5 see youuuu
输出应该是-
id text
1
2
3
4 hello
5 see you
这可能不是特别优雅,也可能不是很快,但它确实有效。我希望它足以满足您的需求。
您生成一个根据您的需要对字符串进行排序的函数,然后使用 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)
简而言之,您首先检查整个字符串是否在一个字母中(设置将只保留唯一元素)。然后你开始遍历所有字母,跳过重复但保持对重复字母的计数。最后,当重复序列完成后,只有当重复次数恰好为 2 时,您才能再添加一个副本。
我对此进行了测试并获得了预期的结果,但是如果您确实遇到了我没有考虑检查的某些案例的问题,请告诉我,我会修复它。
我有一个包含文本数据的数据框列。它很少有完全由重复字母组成的单词,也很少有其他单词部分重复的字母。我想删除由完全重复的字母组成的单词,并在数据框列中保留其他情况下字母的第一次出现(如果重复字母的数量超过 2)。这该怎么做?例如,如果我的数据框有像-
这样的词id text
1 aaaa
2 bb
3 wwwwwwww
4 helloooo
5 see youuuu
输出应该是-
id text
1
2
3
4 hello
5 see you
这可能不是特别优雅,也可能不是很快,但它确实有效。我希望它足以满足您的需求。
您生成一个根据您的需要对字符串进行排序的函数,然后使用 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)
简而言之,您首先检查整个字符串是否在一个字母中(设置将只保留唯一元素)。然后你开始遍历所有字母,跳过重复但保持对重复字母的计数。最后,当重复序列完成后,只有当重复次数恰好为 2 时,您才能再添加一个副本。
我对此进行了测试并获得了预期的结果,但是如果您确实遇到了我没有考虑检查的某些案例的问题,请告诉我,我会修复它。