0

我是 python 新手。我有一个简单的程序来查找一个词在网站中被使用的次数。

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

url = 'https://en.wikipedia.org/wiki/Wolfgang_Amadeus_Mozart'
ourUrl = opener.open(url).read()
soup = BeautifulSoup(ourUrl)
dem = soup.findAll('p') #find paragraphs
word_counts = Counter()
stopwords = frozenset(('A', 'AN', 'THE'))


for i in dem:    # loop for each para
    words = re.findall(r'\w+', i.text)
    cap_words = [word.upper() for word in words if not word.upper() in stopwords]
    word_counts.update(cap_words)

print word_counts

问题是,这个脚本给出了很多只使用一次的单词。如何更新脚本以使包含的单词至少有 5 个字数。

另外,我如何排列前 5 个最常用的单词,比如 word1、word2、word3.... 等。

4

2 回答 2

2

我如何更新脚本以使包含的单词至少有 5 个字数。

您可以按如下方式过滤计数器:filter(lambda x: x[1] > 5, word_counts.iteritems())

filter()接受一个函数和一个可迭代对象,将该函数应用于可迭代对象的每个元素,并且仅在函数返回时将该项目包含在输出中Trueiteritems()返回一个生成器,它通过字典生成键值对。

我如何排列前 5 个最常用的单词,比如 word1、word2、word3.... 等。

有一个most_common(n)计数器功能。请参阅http://docs.python.org/2/library/collections.html

于 2013-07-28T16:01:11.010 回答
0

尝试: print word_counts.most_common(5)

于 2013-07-28T16:04:13.457 回答