python wordcount

本文介绍了一个简单的Python程序,用于统计指定文件中单词的数量,并按出现频率从高到低进行排序。该程序首先读取文件内容,然后使用正则表达式分割单词,并统计每个单词出现的次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 统计给出文件的单词数量,简单版,测试下网页编辑功能
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
统计给出文件的单词数量,并按照由多到少排序
"""

'''
#######################
1. 读取文本文件
2. 统计单词个数
3. 排序后输出
#########################
'''
import re
import time
import operator


class WordCount(object):
    def __init__(self, filename):
        self.filename = filename
        self.word_dict = {}
        self.split_pattern = re.compile(r"[^A-Za-z-]")

    def readfile(self):
        print u"文件名:", self.filename
        with open(self.filename, 'r') as fd:
            for line in fd.readlines():
                self.split_word(line)

    def split_word(self, line):
        bb = re.split(self.split_pattern, line.strip('\n'))
        for word in bb:
            word_lower = word.lower()
            if word_lower != '':
                self.dict_count(word_lower)

    def dict_count(self, word):
        count = 0
        if self.word_dict.has_key(word):
            count += self.word_dict.get(word)
            self.word_dict[word] = count + 1
        else:
            self.word_dict[word] = 1

    def get_result_dict(self):
        return self.word_dict

    def sort_count(self):
        print "单词类型个数", len(self.word_dict.keys())
        sort_list = sorted(self.word_dict)
        '''
        print "单词数量统计列表"

        for word in sort_list:
            print word, self.word_dict.get(word)
        '''
        '''
        print "单词数量统计列表,词频大于30"
        for word in sort_list:
            count = self.word_dict.get(word)
            if count > 30:
                print word, self.word_dict.get(word)
        '''

        ''' 按照单词出现频率排序 '''
        sort_dict = sorted(self.word_dict.iteritems(), key=lambda d:d[1], reverse = True)
        print  sort_dict
        count = 0
        count_const = 1000
        for word in sort_dict:
            if word[1] > count_const:
                print word[0], word[1]
                count += 1
        print "单词频率大于", count_const, "词数为" , count
    def format_print(self):
        self.sort_count()


if __name__ == '__main__':
    start_time = time.time()
    time.sleep(5)
    wordcount = WordCount("/root/code/python/temTestDir/pythonlib.txt")
    wordcount.readfile()
    wordcount.format_print()
    print time.time() - start_time
  1. 测试结果 ,截取一小部分
    world wordcount 部分结果未截取 好吧我只是想看看csdn的代码编辑共功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值