python正则表达式删除重复的单词

boj*_*oje 5 python regex

我是一个非常新的Python

如果有重复的话,我想改变句子.

正确

  • 防爆."这真是太好了" - >"这真是太棒了"
  • 防爆."这只是" - >"这只是"

现在我使用这个reg.但它完全改变了字母.防爆."我的朋友和我很高兴" - >"我的朋友,很高兴"(它删除了"我"和空格)错误

text = re.sub(r'(\w+)\1', r'\1', text) #remove duplicated words in row
Run Code Online (Sandbox Code Playgroud)

我怎样才能做同样的改变,而不是字母,它必须检查单词?

Ash*_*ary 8

非正则表达式解决方案使用itertools.groupby:

>>> strs = "this is just is is"
>>> from itertools import groupby
>>> " ".join([k for k,v in groupby(strs.split())])
'this is just is'
>>> strs = "this just so so so nice" 
>>> " ".join([k for k,v in groupby(strs.split())])
'this just so nice'
Run Code Online (Sandbox Code Playgroud)


tom*_*tom 5

text = re.sub(r'\b(\w+)( \1\b)+', r'\1', text) #remove duplicated words in row
Run Code Online (Sandbox Code Playgroud)

\b空字符串相匹配,但只在一个单词的开头或结尾。