【python二级】八十天环游世界
题目描述
附件中保存1个文本文件,分别对应2个问题
其中,文本文件“八十天环游地球txt”是法国作家儒勒. 凡尔纳《八十天环游地球》长篇小说的网络版本,请修改源文件实现以下功能。
问题2:统计每章节的高频词并打印输出。
要求:在模板补充代码,统计“八十天环游地球. txt”中每一章的标题和内容中,出现次数最多的词语(词语长度不少于2个字符)及其次数,输出格式为章节名、 词语及其出现的次数,以空格分隔,示例如下:
示例
第一章 福克 25
第二章 路路通 17
第三章 福克 26
第四章 福克 27
第五章 福克 31
代码
import jieba
import re
strf='八十天环游地球.txt'
with open(strf,'r',encoding='utf-8') as f:lines=f.read()t=re.findall('(第.{1,3}章.*)',lines)
with open(strf,'r',encoding='utf-8')as f:lines=f.read()s=re.sub('(第.{1,3}章.*)','$',lines)x=s.split('$')[1:]
for i,j in zip(t,x):counts={}txt=jieba.lcut(i+j)for word in txt:if len(word)>=2:counts[word]=counts.get(word,0)+1lsts=list(counts.items())lsts.sort(key=lambda x:x[1],reverse=True)word_max,count_max=lsts[0]chapter=re.findall('(第.{1,3}章)',i)[0]print(chapter+' '+word_max+' '+str(count_max))
简要说明:
这道题主要做两件事:1、把每一章相关的内容摘出来 2、分词
首先第一件事,我们要摘出每一章内容,就必须以标题为分割进行摘出,同时要注意,标题的字符也要加入这一章内容进行分词。
这里可以用re.findall(‘()’,lines),把每一章标题摘到一个叫t的列表里。
然后用re.sub(‘()’,‘$’,lines)的方式,把冗长且无法统一的标题名替换成美元符号,然后用字符串split()方式去以美元为分割切成列表,然后去掉第一个元素,也就是标题,就剩下的是每一章的正文内容。
然后用zip()去把每一章对应的标题和正文内容赋值给i和j,再把它们拼起来分词、遍历、用字典记录词频、用列表倒序排序。最后把列表第一个元素拿出来,赋值给word_max和count_max,因为第一个元素是词频最大的。然后是输出,由于’第x章‘相关内容不好输出,再用正则表达式re.findall()去取出来,由于返回的是列表且只有一个元素,因此取[0]即为把这个’第x章’取出来了。
然后用字符串的方式输出来。
【python二级】八十天环游世界相关推荐
- python二级第十二套答案
python二级第十二套答案 46.考生文件夹下存在三个Python源文件,分别对应三个问题,请按照文件内说明修改代码,实现以下功能: 法定节假日是根据各国.各名族的风俗习惯或纪念要求,由国家法律统一 ...
- python二级第十套答案
python二级第十套答案 46.考生文件夹下,存在2个Python源文件和1个文本文件.其中,2个Python源文件对应2个问题,文本文件"data.txt"中包含一篇从互联网上 ...
- 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1
孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...
- python leetcode_八十二、Python | Leetcode贪心算法系列
@Author:Runsen @Date:2020/7/5 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- 电驴资源 凡尔纳“八十天环球地球”小说英文全文朗读plusPHD
电驴资源 凡尔纳"八十天环球地球"小说英文全文朗读plusPHD 2010年03月05日 ed2k://|file|[%E5%87%A1%E5%B0%94%E7%BA%B3%E2% ...
- Python二级应用题代码自用(无忧二级)
简单应用题 第一套 2 data = input() # 姓名 年龄 性别 s = 0 n = 0 i = 0 while data:i += 1ls = data.split()s += int(l ...
- python二级大题—1-12
f = open('命运.txt','r') txt = f.read()#读取整个文本 d={} for i in txt:if i not in",.!?<>[]" ...
- 八十九、Python的GUI系列 | 使用PyQt5 快速构建一个GUI 应用
@Author:Runsen @Date:2020/7/11 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- 八十八、Python | 十大排序算法系列(下篇)
@Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
最新文章
- VC2008下编译使用OpenSSL
- python一千行入门代码-Python – 一次从文件中读取1000行
- mysql是否有缓存区_Mysql查询高速缓存区
- CSS3中的群组选择器,后代选择器[空格]子元素选择器 >相邻兄弟选择器+兄弟选择器~
- 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结
- 《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数
- ppc linux 性能,用profile和oprofile监视视linux性能!
- Kubernetes-Pod/ReplicaSet/Deployment/Service关系(二十一)
- (32) css—opcity属性
- 对比了6家交易所的下币规则,我们发现……
- vetur插件提示 'v-for' directives require 'v-bind:key' directives.错误的解决办法
- 【手势识别】基于matlab GUI肤色手势识别(带面板)【含Matlab源码 1650期】
- docker 停止、启动、删除镜像指令操作总结
- python复数计算符号_Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块...
- Pandas操作总结
- cc1101初始化c语言程序,STC89C52单片机驱动CC1101无线模块的接收C语言程序
- 摆扫式(whisk broom)和推扫式(push broom)卫星传感器
- php导入excel 进度条,.NET_进度条在.net导入Excel时的应用实例,本文实例讲述了进度条在.net导 - phpStudy...
- TypeScript Mixins 混入
- 2022年初级审计师考试复习题及答案