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'[^\w\s-]+', ' ', 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}\n')
        f.write(f'{"Unique words": <20} {uniqueNum}\n')
        f.write('-----------------------------\n')
        for i in sorted(dict.items(), key=lambda x: x[1], reverse=True):  # 将字典降序排序,并遍历
            f.write(f'{i[0]: <20} {i[1]}\n')
            print(f'{i[0]: <20} {i[1]}')

if __name__=="__main__":
    # 要分析的文件的路径
    name = r'C:\blood.txt'
    # 生成的词频的路径
    desName = 'C:\dict.txt'
    
    fre(name,desName)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM