2016-04-10 2 views
-1

Как проверить, имеет ли следующее предложение дублирующиеся слова и идентифицирует их? «Цветение цветущей вишни начнется в конце апреля» Я использовал: import re check = re.search (r '(\ b \ w +) \ s + \ 1', 'Цветение цветущей вишни начнется в позже в марте, High Park Toronto ') print check.group (1)Python Regular Expression - проверить повторяющиеся слова

Это даст мне только «цветение», но не «в».

+0

Можете ли вы показать свою текущую попытку кодирования и объяснить, что в данный момент не работает? – idjaw

ответ

0

Что-то, как это будет работать:

>>> text = 'Cherry tree blooming blooming will begin in in late April'.split() 
>>> any(i for i in text if text.count(i) > 1) 
True 
0

Использование collections.Counter

>>> my_str = 'Cherry tree blooming blooming will begin in in late April' 
>>> import collections 
>>> collections.Counter(my_str.split()) # splits the string on whitespace and counts the word occurance. 
Counter({'blooming': 2, 'in': 2, 'late': 1, 'begin': 1, 'Cherry': 1, 'tree': 1, 'will': 1, 'April': 1}) 
>>> any(x for x in collections.Counter(my_str.split()).values() if x>1) 
True 
0

Определение и использование функции, как следующее:

def check_dup(sentence): 
    words = sentence.split(" ") 
    dup = {} 

    for word in words: 
     if word in dup.keys(): 
      return True 
     dup[word] = "present" 

    return False 

print check_dup(sentence) 
0

Может использовать набор, чтобы сохранить отслеживание слов, которые вы видели ранее:

sentence = 'Cherry tree blooming blooming will begin in in late April' 
seen = set() 

for word in sentence.split(' '): 
    if word in seen: 
     print(word) 
    seen.add(word)