Python实现对哈利波特小说单词统计
文章目录
- 要求
- 一、打开文件
- 正则表达式
- spilt()函数
- 实例
- 二、词频统计
- 三、单词排序
- 四、输出或写入文件
- python文件写入
要求
对HarryPotter5.txt英文小说进行词频统计,统计出前二十个频率最高的单词,并打印输出或写入文件
一、打开文件
打开文件并将单词中非单词字符用空格代替
代码:
#读取小说内容
fp = open('HarryPotter5.txt')
content = fp.read()
#所有标点符号 用空格代替
#匹配非单词字符的字符
content = re.sub('\W',' ',content)
# Python split() 通过指定分隔符对字符串进行切片
words = content.split() # 以空格为分隔符,包含 \n
正则表达式
正则re
\W
__匹配非单词字符的字符。_这与 \w 正相反。如果使用了 ASCII 旗标,这就等价于 [^a-zA-Z0-9]。如果使用了 LOCALE 旗标,则会匹配当前区域中既非字母数字也非下划线的字符。
spilt()函数
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
str.split(str="", num=string.count(str)).
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有
实例
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
以上实例输出结果如下:
[‘Line1-abcdef’, ‘Line2-abc’, ‘Line4-abcd’]
[‘Line1-abcdef’, ‘\nLine2-abc \nLine4-abcd’]
以下实例以 # 号为分隔符,指定第二个参数为 1,返回两个参数列表。
txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
print x
以上实例输出结果如下:
[‘Google’, ‘Runoob#Taobao#Facebook’]
二、词频统计
代码如下(示例):
#对所有的单词出现次数进行统计
#key-->count 数据结构:Dict字典
wordCounter = {}
for word in words:if word in wordCounter:wordCounter[word] += 1else:wordCounter[word] = 1
#print(wordCounter)
#这样打印输出是乱序 需要进行排序 sorted
三、单词排序
代码如下(示例):
#默认按照增序 使用reverse参数改变顺序
sortedWordCounter = sorted(wordCounter.items(),key=lambda item: item[1],reverse=True)
#print(sortedWordCounter) #这是打印排序完毕的词频
Dict字典底层是哈希结构 哈希结构不支持排序
wordCounter.items()装换成-----列表
这个列表中每一个元素是一个元组
元组里有两个元素 第一个元素是键 第二个元素是值
效果如下:
解释 lambda item: item[1]:
相当于定义一个函数 lambda 相当于匿名函数
效果如下
lambda item: item[1] :前是参数 :后是返回值
def func(item):return item[1]
匿名函数和正常函数效果一样只不过是没有名字而已
四、输出或写入文件
代码如下(示例):
#方法一
print(sortedWordCounter[:20])
#方法二
for item in sortedWordCounter[:20]:print(item)
#也可以写入文件
fp = open('countwords_result.csv','w')
for (word,count) in sortedWordCounter:line = word+','+str(count)+'\n'fp.write(line)
python文件写入
写入已有文件
如需写入已有的文件,必须向 open() 函数添加参数:
“a” - 追加 - 会追加到文件的末尾
“w” - 写入 - 会覆盖任何已有的内容
注释:“w” 方法会覆盖全部内容。
#打开文件 "demofile2.txt" 并将内容追加到文件中:f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
#打开文件 "demofile3.txt" 并覆盖内容:f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()# 写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())
如需在 Python 中创建新文件,请使用 open() 方法,并使用以下参数之一:
“x” - 创建 - 将创建一个文件,如果文件存在则返回错误
“a” - 追加 - 如果指定的文件不存在,将创建一个文件
“w” - 写入 - 如果指定的文件不存在,将创建一个文件
#创建名为 "myfile.txt" 的文件:
f = open("myfile.txt", "x")
#结果:已创建新的空文件!#如果不存在,则创建新文件:
f = open("myfile.txt", "w")
Python实现对哈利波特小说单词统计相关推荐
- iOS 小说字数统计
小说单词统计规则(泰语除外) iOS 小说单词统计规则算法 import Foundationfinal class WordCounter {static let shared = WordCoun ...
- python单词统计、给定一个段落()_自己动手Python写一个词频统计小项目
这里用python做一个小小的英文词频的统计.当然了,自己写的,就没有停词.计算词语权重这些功能了,纯粹是写写代码练练手. 首先呢,这里是一篇英文文章,就像下面这样的185个小段落,数据量还是不大的, ...
- python文本统计单词_Python实现文本单词统计
在以前的文章中,我提到过Python标准库中的collections模块中的Counter类.它的作用非常大,这里我们要用利它来实现单词统计.对于任意一篇全英文的文本文件,我们要列出其中每一个单词各自 ...
- python数学基础——单词统计
这个练习使用的是英文的单词统计,使用split通过单词中间的空格来做区分,在遍历的过程中通过对[字典]类型进行[字典推导式]的处理来计算每个单词出现的频次.但是由于过程中我们通过re的正则表达式来替换 ...
- python数据工程师养成(1)--小说字频统计
小说字频统计 简介 数据源 目标 步骤 总结 参考书目 简介 最近看到了一本好书,名字叫<Python全栈数据工程师养成攻略>,随便翻翻感觉对个人学习颇有裨益,故打算跟着书上的实例学完它. ...
- python文件读取操作练习题(统计单词)
python文件读取操作练习题(统计单词) 学习路线:python的文件读取基础入门(read(),readlines(),with.open()) ->python文件读取操作练习题(统计单词 ...
- 单词统计,并按顺序打印 python
7-7 单词统计,并按顺序打印 (10 分) 输入一些英文单词,统计每个单词出现的次数(大小写,如'At'和'at'算不同的单词),并按次数从多到少打印结果,如果次数一样就按单词的字典顺序打印(大写先 ...
- python中读取txt文件、统计其中所有字母出现的频度_Python编程小技巧:如何统计序列中元素的出现频度...
原标题:Python编程小技巧:如何统计序列中元素的出现频度 实际案例 某随机序列中,找到出现次数最高的三个元素,他们的出现次数是多少? 对某英文文章的单词进行词频统计,找到出现次数最高的10个单词, ...
- 大数据阶段划分及案例单词统计
大数据阶段的重要课程划分 离线分析 : hadoop生态圈 HDFS, MapReduce(概念偏多), hive(底层是MapReduce), 离线业务分析80%都是使用hive实时分析 : spa ...
最新文章
- LIGA Stereo:基于双目3D检测的Lidar几何感知表示学习(ICCV2021)
- Maximum Product Subarray
- 让Keras更酷一些:中间变量、权重滑动和安全生成器
- PHP访问连接MYSQL数据库
- .NET 类型(Types)的那些事
- elementui下拉框选择图片_Element UI系列:Select下拉框实现默认选择
- 走在WCF学习的路上---印在脑子里的点点滴滴(两种元数据交换方式的优缺点)...
- 配置网络终端计算机,终端网络计算机概述.ppt
- 微信小说域名被封-366tool在线解答微信屏蔽小说网页停止访问的解决方案
- chrome打开链接隐私设置错误_解决用谷歌浏览器访问https网站遇到的“隐私设置错误 您的连接不是私密连接”问题...
- sparc-linux-gcc math.h 调用,无法使用叮进行交叉编译为SPARC
- 大数据预处理之数据集成
- 土库曼人纳德沙为什么选择波斯一方与奥斯曼人作战?
- java graphics2d 绘图_java GUI Graphics2D 绘图
- 记一次xxl-job执行器Online机器地址(注册节点)加倍问题
- App地推活动的效果差?可能是地推业绩统计效率低惹的祸
- Rocket Pool 、InfStones 、Lido 三种质押服务浅析
- RTTHREAD软件包目录
- MyBatis警告信息 All illegal access operations will be denied in a future release
- linux录屏和截图软件
热门文章
- 一线PPT制作理论——简洁电磁环境构建
- 前端学习CSS篇(三)
- 不可错过的250款独立游戏(珍藏版)
- DI接口测试工装研究
- [书目20141024]王正良硬笔书法教学
- 中国传媒大学计算机与网络安全,黄玮 - 中国传媒大学 - 计算机与网络空间安全学院...
- 互联网真的寒冬了么?——1024,祝程序员节日快乐。
- 搜索条(在表格中)实现搜索功能
- C++のeasyx3:函数clearcliprgn、cleardevice、closegraph、getaspectratio、graphdefaults的运用
- python 数据分析 14天_python数据分析简介