【问题标题】:Search for repeating word in text搜索文本中的重复单词
【发布时间】:2016-10-21 11:21:54
【问题描述】:

我没有找到任何直接的答案。

我需要在文本/字符串中找到重复次数最多的单词。 例如。 具有以下值的字符串:

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

那么结果需要et\pmostowiak

我应该如何做到这一点?

编辑: 我正在使用旧版本的 jython,所以我不能使用带有 Counter 功能的集合库

这会打印找到的所有值超过一个:

d = {}

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

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

如果我可以进一步重复使用它?

【问题讨论】:

  • 一个词有什么区别?基于行?
  • 在这种情况下是换行
  • 我认为这是stackoverflow.com/questions/2161752/…的副本...
  • 如果s是字符串,import collectionsprint(collections.Counter(s.split('\n')).most_common(1)[0][0])
  • 这几乎是重复的——除非问题是拆分一个字符串,这也将是重复的——但这确实是两个问题

标签: jython


【解决方案1】:

一旦你有了一些可迭代的单词容器,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')

【讨论】:

  • 对不起,我的坏人:
  • 我忘记提及我正在处理旧版本的 jython,因此不支持集合库.. 对此感到抱歉
  • @user2023042 在这种情况下,您可能应该更新实际问题和标签以反映这一点。
  • @user2023042 一旦你有了单词,你就可以弄清楚如何计算频率;一本可以统计的单词字典就可以了
  • 用字典计算频率:stackoverflow.com/a/2161792/4082052
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多