目录
- 一、文件的使用
- 二、文本词频统计
- 三、词云的使用
- 今天的课后练习实例题
- 总结
一、文件的使用
文件处理分为三个步骤:
- 文件的打开
- 对打开的文件的操作
- 关闭文件
原理流程图:
1.1 文件的打开
注:
文件路径和名称:"D:/PYE/f.txt" 或 "D:\PYE\f.txt"
源文件同目录可省路径:"./PYE/f.txt" 或 "f.txt"
1.2 文件的操作
文件的打开模式 | 描述 |
---|---|
'r' | 只读模式,默认值,如果文件不存在,返回FileNotFoundError |
'w' | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
'x' | 创建写模式,文件不存在则创建,存在则返回FileExistsError |
'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
'b' | 二进制文件模式 |
't' | 文本文件模式,默认值 |
'+' | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
- 文本形式、只读模式、默认值:
f = open("f.txt")
- 文本形式、只读模式、同默认值:
f = open("f.txt", "rt")
- 文本形式、覆盖写模式:
f = open("f.txt", "w")
- 文本形式、追加写模式+ 读文件:
f = open("f.txt", "a+")
- 文本形式、创建写模式:
f = open("f.txt", "x")
- 二进制形式、只读模式:
f = open("f.txt", "b")
- 二进制形式、覆盖写模式:
f = open("f.txt"):f = open("f.txt", "wb")
1.3 文件的关闭
<变量名>.close()
# 变量名为文件句柄
1.4 文件使用案例
# 文件的读取
f = open(r'F:\shpython11\pycharmwork\first_project\file\file.py','r')
data = f.read()
print(data)
f.close()
# 文件的编辑(覆盖写入,清空文件后写入)
fw = open(r'F:\shpython11\pycharmwork\first_project\file\file.py','w+')
fw.writelines(r'abc=new file')
f.close()
二、文本词频统计
文本词频统计
- 需求:一篇文章,出现了哪些词?哪些词出现得最多?
- 该怎么做呢?
2.1 英文词频统计
程序代码:
# 1.首先先打开要统计的文件
f = open(r'F:\shpython11\pycharmwork\first_project\file\hamlet.txt','r',encoding='utf8')
# 把数据读取出来并且讲所有字符转为小写字母
data = f.read().lower()
# 用一个字符串接收所有 可能在文本中出现的 标点符号和其他字符
zf = r'!"#$%&()*+,-.'+"'"+r'/:;<=>?@[\\]^_‘{|}~'
# 去除文本中的多余的字符和标点符号
for i in data:
if i in zf:
data = data.replace(i," ")
# 对读取的内容进行切分成序列
data_split = data.split()
# 创建一个用来存储的字典
data_dict = {}
# 循环序列将重复的单词,计数后放入字典中
for i in data_split:
if i not in data_dict:
data_dict[i] = 1
else:
data_dict[i] += 1
# 将字典转为序列 进行计数排序
list_data = list(data_dict.items())
# 定义一个取值函数
def find_values(i):
return i[1]
list_data.sort(key=find_values,reverse=True)
# 循环输出出现次数最多的是个单词
for i in list_data[:10]:
print(f'{i[0]:^9} {i[1]:^5}')
运行结果:
the 953
and 856
to 657
of 581
i 519
you 498
a 471
my 447
in 388
hamlet 366
2.2 中文词频的使用
程序代码:
# # 中文词频统计
# 导入jieba库
import jieba
# 创建一个字典 用来
data_dict = {}
excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此","商议","如何","丞相","主公",
"军士","左右","军马","引兵","次日","大喜"}
f = open(r'F:\shpython11\pycharmwork\first_project\file\threekingdoms.txt','r',encoding='utf8')
data = jieba.lcut(f.read())
for word in data:
if len(word) == 1:
continue
if word in excludes:
continue
if '曰' in word:
word = word.replace('曰',"")
if word in data_dict:
data_dict[word] += 1
else:
data_dict[word] = 1
def find_values(i):
return i[1]
list_data = list(data_dict.items())
list_data.sort(key=find_values,reverse=True)
for i in list_data[:10]:
print(f'{i[0]:^8} {i[1]:^5}')
运行结果:
孔明 1226
玄德 975
曹操 953
关公 510
张飞 358
吕布 300
赵云 278
刘备 277
云长 265
孙权 264
三、词云的使用
3.1 基本分析
基本思路
- 步骤1:读取文件、分词整理
- 步骤2:设置并输出词云
- 步骤3:观察结果,优化迭代
3.2 具体实现
实例:
### 制作词云
# 导入wordcloud云库模块
import wordcloud
# 导入jieba模块库
import jieba
# 制作一个简单的词云
# 要制作成云库的文本内容
txt = "刘梦是这个世界最漂亮的女孩没有之一"
# 设置云库的背景颜色,字体,宽度,高度等
w = wordcloud.WordCloud(background_color="white",font_path=r"C:\Windows\Fonts\FZLTCXHJW.TTF",width=400,height=400)
# 将内容 放入云库中
w.generate(" ".join(jieba.lcut(txt)))
# 将制作好的云词导出来
w.to_file("test.png")
运行结果:
实例二:
# 导入wordcloud云库模块
import wordcloud
# 导入jieba库
import jieba
# # 词云进阶
# 打开文本文件
f = open(r'F:\shpython11\pycharmwork\first_project\file\threekingdoms.txt','r',encoding='utf8')
# 将文本内容放大 data 变量中 存储为等下要制作的云库内容
data = " ".join(jieba.lcut(f.read()))
# 设置云库的背景颜色,字体,宽度,高度等
w = wordcloud.WordCloud(background_color="white",font_path=r"C:\Windows\Fonts\FZLTCXHJW.TTF",width=1000,height=800)
w.generate(data)
w.to_file("test2.png")
运行结果:
今天的课后练习实例题
https://www.cnblogs.com/foreversun92/p/11215222.html
总结
今天的上课学习的是python的文件的使用、文本词频统计分析和词云的制作。python文件的使用是一个比较重点的东西,因为以后编程是需要和文件之间进行交互的,而掌握这个知识点,对我们的之后做项目等都非常有帮助。而文本词频统计,就是对之前学习的东西和文件的一种结合使用的小案例,帮助我们更深的去了解和学习python的具体知识点。而词云就是一个比较好玩的东西,用来做一些自己感兴趣的东西也是非常不错的呢。