with open('hamlet.txt',encoding='utf-8') as f: b=eval(input()) x=[] word={} j=0 y=[] x=f.read().lower() for fh in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~': x=x.replace(fh,' ') x=x.replace('\n',' ') a=x.split(' ') a.pop() for i in a: word[i]=word.get(i,0)+1 y=sorted(word.items(),key=lambda x: x[1],reverse=True) del y[0] y=dict(y) for i in y: print("{:<10}{:>5}".format(i,y[i])) j=j+1 if j==b: exit() 分析以上程序
时间: 2023-06-16 08:05:37 浏览: 86
Python库 | hamlet_cli-8.2.0.dev3-py2.py3-none-any.whl
以上程序是一个读取文件并统计单词出现次数的程序,具体分析如下:
1. 打开文件'hamlet.txt',以 utf-8 编码方式读取文件内容,并将其赋值给变量 f。
2. 通过 input() 获取一个整数,赋值给变量 b。
3. 初始化列表 x、字典 word 和列表 y,以及计数器 j,分别用于存储文本内容、单词出现次数、排序后的单词出现次数以及输出前 b 个单词。
4. 将读取的文件内容转换为小写,并通过循环将标点符号和换行符替换为空格。
5. 将处理后的字符串通过空格分割为单词列表 a,并删除最后一个空元素。
6. 遍历单词列表 a,将每个单词作为字典 word 的键,如果该单词已经存在,则将其出现次数加 1;如果不存在,则将其添加到字典中,并将出现次数初始化为 1。
7. 将字典 word 按照单词出现次数从大到小排序,并将排序后的结果赋值给列表 y,其中每个元素为一个元组,元组中第一个元素为单词,第二个元素为出现次数。
8. 删除列表 y 中第一个元素,即空格的出现次数。
9. 将列表 y 转换为字典,并遍历字典输出前 b 个单词及其出现次数,每行输出一个单词及其出现次数。
10. 计数器 j 加 1,如果 j 等于 b,则程序退出。
需要注意的是,该程序存在一些问题,例如没有考虑到单词中包含连字符的情况,也没有考虑到单词中包含数字或其他特殊字符的情况。
阅读全文