2013-06-21 2 views
4

Я очень новый Pythonpython регулярное выражение для удаления повторяющихся слов

Я хочу изменить предложение, если есть повторяющиеся слова.

Правильная

  • Ex. «это просто так так хорошо» -> «это просто так хорошо»
  • Ex. «это просто есть» -> «это просто есть»

Сейчас я пользуюсь этой рег. но все это меняется на письма. Пример. «Мой друг и я счастлив» -> «Мой друг и счастлив» (это удалить «я» и пробел) ОШИБКА

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

Как я могу сделать то же самое изменение, но вместо букв он должен проверить слова?

ответ

4
text = re.sub(r'\b(\w+)(\1\b)+', r'\1', text) #remove duplicated words in row 

\b соответствует пустой строке, но только в начале или в конце слова.

7

Non- решение регулярное выражение с помощью 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' 
+0

+1, И я лично предпочитаю не использовать регулярное выражение, но ОП спросил о регулярном выражении. – Elazar