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

2024-03-29 05:22:12 发布

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

我有一个文本句子列表,有很多单词,如aaaaa,zzzzz,eeer,qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq。。。你知道吗

我正在寻找一种方法来删除我的文字句子这些。你知道吗

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

我就是不知道怎么做。你知道吗


Tags: thetext文本列表another单词at句子
3条回答
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

因此,这个正则表达式将查找具有3个或更多重复字符的字符串,即使它位于字符串的开头、中间或结尾。你知道吗

类似“bb”的内容可以被r“\s(.)\1{1,}\s”捕获

\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
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)

相关问题 更多 >