Python学习第六天学习汇总(python文件处理和词云的使用)

一、文件的使用

文件处理分为三个步骤:

  • 文件的打开
  • 对打开的文件的操作
  • 关闭文件

原理流程图:

文件的操作

1.1 文件的打开

​ 使用open方法文件的打开

注:

​ 文件路径和名称:"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的具体知识点。而词云就是一个比较好玩的东西,用来做一些自己感兴趣的东西也是非常不错的呢。
posted @ 2019-07-19 20:48  foreversun92  阅读(580)  评论(0编辑  收藏  举报