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