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

Python 如何从文本句子中删除重复字符?,python,regex,python-3.x,Python,Regex,Python 3.x,我有一个文本句子列表,里面有很多单词,比如aaaaa,zzzzz,eer,qqqqq 我正在寻找一种从我的文本句子中删除这些内容的方法 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 charact

我有一个文本句子列表,里面有很多单词,比如aaaaa,zzzzz,eer,qqqqq

我正在寻找一种从我的文本句子中删除这些内容的方法

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
我就是不知道怎么做。

\b(?:\w(\w)\1+\124;(\ w)\2+\w\124;(\ w)\3+)\b

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

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

编辑:来自评论。似乎其他单词有不同的用法:

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

检测一个“单词”的方法有很多种,都是一个字母。一种方法是制作一组字母,检查其长度,然后检查原始单词,看其本身是否有效。你没有详细说明你的边界标准,没有一个清晰的解决方案。我没有足够的声誉来评论sln的帖子,但我想承认,他涵盖了你所有的用例。但问题是:有没有像EEE RRRRR这样的例子,其中有一些重复字符的例子?谢谢。这似乎很有效。有没有一种方法可以处理一个字符有两个重复的情况,比如rr、kk、qq、BB。虽然这个答案在技术上可能是正确的,但最好在代码中加入一个简短的解释,以帮助新用户(以及整个社区)理解答案/代码的作用。纯代码不能帮助其他人“了解”代码的工作方式/原因非常感谢,但它不能删除前面有另一个字符的单词,如Geeee、Reeee。@用户\u 12检查编辑我在文本上尝试了它,但似乎返回了一个错误。错误:未知扩展?|位于位置6。我正在使用ipython笔记本进行测试。@user_12因为这使用了分支重置语法,所以您必须使用
regex
而不是
re
。ie在你的ipython笔记本上做
!pip安装正则表达式
,然后导入正则表达式,最后运行
regex.sub(r'\s*\b(?|(\s)|.(\s))\1+\s*,'',text)
@user\u 12使用
re
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
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)