• Python 统计英文词频 (txt格式)


    import re
    
    def fre(TargetName,desName):
        '''打开 TargetName 文本,统计总单词数、独特的单词数、单词词频,并写入 desName 文件中'''
    
        dict = {} # 存放单词
        number = 0  # 统计累计文本总单词数
        uniqueNum = 0  # 统计不重复的单词的个数
        # 打开文本
        with open(TargetName,'r',encoding='utf-8') as f:
            for line in f: # 逐行读取
                # 使用正则表达式替换除了 字母和空白符 以外的所有其他符号
                line = re.sub(r'[^ws-]+', ' ', line)
                word = line.split()  # 将句子分割成单词列表
                for w in word:       # 遍历单词列表
                    number += 1      # 每遍历一个单词,总单词数就+1
                    w = w.lower()  # 单词转换成全小写的形式
                    if w not in dict:  # 如果单词不在dict里面,就把单词放进去,设置这个单词的词频为1,并且 duniqueNum+1
                        dict[w] = 1
                        uniqueNum += 1
                    else:               # 如果单词已经存在,就将词频数+1
                        dict[w] = dict[w]+1
        #格式化打印
        print(f'{"Total words": <20} {number}')
        print(f'{"Unique words": <20} {uniqueNum}')
    
        # 将词频写入文件
        with open(desName, 'w', encoding='utf8') as f:
            # 先写入总词数、不重复单词数的信息
            f.write(f'{"Total words": <20} {number}
    ')
            f.write(f'{"Unique words": <20} {uniqueNum}
    ')
            f.write('-----------------------------
    ')
            for i in sorted(dict.items(), key=lambda x: x[1], reverse=True):  # 将字典降序排序,并遍历
                f.write(f'{i[0]: <20} {i[1]}
    ')
                print(f'{i[0]: <20} {i[1]}')
    
    if __name__=="__main__":
        # 要分析的文件的路径
        name = r'C:lood.txt'
        # 生成的词频的路径
        desName = 'C:dict.txt'
        
        fre(name,desName)
  • 相关阅读:
    The Tower of Hanoi
    POJ 3259:Wormholes
    第二数学归纳法
    Josephus Problem
    想成为Java高手的25个学习目标
    How to find a cycle of length 4?
    Fabonacci Numbers
    通过参数离线安装SharePoint 2010[转]
    Sharepoint2010文档库权限问题
    BizTalk 2010 学习笔记——第一章 BizTalk 2010 概述
  • 原文地址:https://www.cnblogs.com/wztshine/p/12142212.html
Copyright © 2020-2023  润新知