2016-10-21 3 views
-2

Я не нашел прямых ответов.Поиск повторяющегося слова в тексте

Мне нужно найти слова в тексте/строке, которая повторяется больше всего. . Строка, которая имеет следующие значения:

000587\local_users 
000587\local_users 
4444\et-4444 
et\pmostowiak 
et\pmostowiak 
et\pmostowiak 

Затем результаты должен быть др \ pmostowiak

Как я должен это сделать?

EDIT: Я использую старую версию Jython, так что я не могу использовать библиотеку коллекций с функцией счетчика

Это печатает все значения, которые встречаются чаще, чем те:

d = {} 

for x in users: 
    d[x] = x in d 

_result = [x for x in d if d[x]] # [1] 

Если Я могу снова использовать это?

+1

что отличает слово? лайн? – Sundeep

+0

В этом случае да разрыв строки – user2023042

+1

Я думаю, что это дубликат http://stackoverflow.com/questions/2161752/how-to-count-the-frequency-of-the-elements-in-a-list. .. – Sundeep

ответ

2

Как только у вас есть итерируемый контейнер слов, collections выполняет именно то, что вам нужно.

>>> import collections 
>>> words = ['000587\local_users', '000587\local_users', '4444\et-4444', 'et\pmostowiak', 'et\pmostowiak', 'et\pmostowiak'] 
>>> print collections.Counter(words).most_common(1) 
[('et\\pmostowiak', 3)] 

Возникает вопрос о том, как split строку. Эта работа:

>>> str = """000587\local_users 
... 000587\local_users 
... 4444\et-4444 
... et\pmostowiak 
... et\pmostowiak 
... et\pmostowiak""" 
>>> str.split('\n') 
['000587\\local_users', '000587\\local_users', '4444\\et-4444', 'et\\pmostowiak', 'et\\pmostowiak', 'et\\pmostowiak'] 
>>> words = str.split('\n') 
+0

Извините, ребята, мои плохие: – user2023042

+0

Я вроде забыл упомянуть, что имею дело со старой версией jython и, следовательно, библиотека коллекций не поддерживается .. извините за это – user2023042

+2

@ user2023042 В таком случае вам, вероятно, следует обновить фактический вопрос и теги, чтобы отразить это. – Totem

 Смежные вопросы

  • Нет связанных вопросов^_^