ITxiaobaibai 2020-01-02
# 笨方法,直接把需要替换掉的字符写到一个list中 si =[] def fre(TargetName,desName): ‘‘‘打开 TargetName 文本,统计总单词数、独特的单词数、单词词频,并写入 desName 文件中‘‘‘ dict = {} # 存放单词 number = 0 # 统计累计文本总单词数 uniqueNum = 0 # 统计不重复的单词的个数 # 打开文本 with open(TargetName,‘r‘,encoding=‘utf-8‘) as f: for line in f: # 逐行读取 for s in si: # 遍历 si 中的元素 if s in line: # 如果这一行包含 列表si 中的任意一个元素,就用空格替换掉 line = line.replace(s,‘ ‘) 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 = ‘Gone Girl - Gillian Flynn.txt‘ desName = ‘dict.txt‘ fre(name,desName)