如何从文本句子中删除重复字符?

时间:2019-08-20 23:10:44

标签: python regex python-3.x

我有一个文本句子列表,并且有很多单词,例如aaaaa,zzzzz,eeer,qqqqqqq ...

我正在寻找一种将其从我的文本句子中删除的方法。

text = I'm a really good aaaaaa eeeeer jjjjj llll bb

我不知道可以使用什么正则表达式,因此可以完全删除这些单词。像

这样的边缘情况
1) aaaaae (you will have one another character at the end)
2) brrrrrr (another character at the beginning)

我正在寻找这样的输出

text = I'm really good

我只是不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

\b(?:\w(\w)\1+|(\w)\2+\w|(\w)\3+)\b

https://regex101.com/r/iDVkRT/1

 \b 
 (?:
      \w 
      ( \w )                        # (1)
      \1+ 
   |  ( \w )                        # (2)
      \2+ \w 
   |  ( \w )                        # (3)
      \3+ 
 )
 \b

答案 1 :(得分:1)

import re 

text = "I'm a really good aaaaaa eeeeer jjjjj llll bb"
out = re.sub(r"\w*(.)\1{3,}\w*", r"", text)
print(out)
>> I'm a really good     bb

因此,此RegEx将查找具有3个重复或更多重复字符的字符串,即使它位于字符串的开头,中间或结尾。

r'\ s(。)\ 1 {1,} \ s“可能会捕获类似“ bb”的东西

答案 2 :(得分:1)

re.sub(r'\s\b(\S)\1+\S*','',text)

"I'm a really good"

编辑:从评论开始。看来其他单词的用法有所不同:

 re.sub(r'\s\S*(.)(?:\1{2,}\S*|\1+\b\S*)','',text)