【Python入门】——文件读写 Jieba库分词 WordCloud库词云制图

2023-12-30 06:32

本文主要是介绍【Python入门】——文件读写 Jieba库分词 WordCloud库词云制图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.文件和字符串格式化


1.1文件

文本文件

文件时数据的抽象和集合,由单一特定编码组成的文件,如UTF-8编码

二进制文件

直接由比特0和1组成,没有统一字符编码

文件处理的步骤:打开——操作——关闭

1. 打开

#<变量名> = open(<文件路径>,<打开模式>)
七种打开文件的模式
1.'r' #只读模式,如果文件不存在,返回FileNotFoundError,默认
2.'w' #覆盖写模式,文件不存在则创建,存在则完全覆盖
3.'x' #创建写模式,文件不存在则创建,存在则返回FileExistsError
4.'a' #追加写模式,文件不存在则创建,存在则在文件最后追加内容
5.'b' #二进制文件模式
6.'t' #文本文件模式,默认
7.'+' #与r/w/x/a一同使用,在原功能基础上增加同时读写功能
#文本形式只读模式打开文件
tf = open("f.txt","rt") #
print(tf.readline())
tf.close()#二进制形式只读模式打开文件
bf = open("f.txt","rb")
print(bf.readline())
bf.close()
三个"读"方法
1.read(size) #每次读取整个文件size个字符 默认全部
2.readlines(hint) #一次读取前hint,然后将文件拆成多行,返回一个列表
3.readline()  #读取一行返回一行 

2.操作

# 遍历全文本的方法
#一、一次全部读入
fname = input("输入文件名称")
fo = open(fname,"r")
txt = fo.read()
#对全文txt进行处理
fo.close()#二、利用loop每次读入一部分
fname = input("输入文件名称")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":#对txt进行处理txt = fo.read(2)
fo.close()#逐行遍历
fname = input("输入文件名称")
fo = open(fname,"r")
for line in fo.readlines():print(line)
fo.close()

3.文件写入

<f>.write(s)   #向文件写入一个字符串或字节流
#例如   f.write("中国是一个伟大的国家")
<f>.writelines(lines) #将一个元素全为字符串的列表拼接后写入文件
#例如 ls = ["中国","法国","美国"]  f.writelines(ls)
<f>.seek(offset) #改变当前文件操作指针的位置offset 0-文件开头  1-当前位置  2 - 文件结尾
# 例如
fo = open("output_fo.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls) #写完文件 文件指针在结尾
fo.seek(0)  #要回到开头才可以打印
for line in fo: #按行输出print(line)
fo.close()

实例:自动轨迹绘制

#使用Turtle自动轨迹绘制
#数据接口格式:
#长度  左0右1 角度 RGB颜色
import turtle as t
t.title("自动轨迹绘制")
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = []  #建立数据列表
f = open("data.txt")
for line in f:line = line.replace("\n","")datals.append(list(map(eval,line.split(",")))) #map作用:文本依据','分隔后 每一个元素都使用eval操作
f.close()
#自动绘制
for i in range(len(datals)):t.pencolor(datals[i][3],datals[i][4],datals[i][5])t.fd(datals[i][0])if datals[i][1]:t.right(datals[i][2])else:t.left(datals[i][2])
t.done()
1.2数据格式化处理
#一维数据的写入处理 
ls = ['中国','美国','日本'] 
f = open(fname,'w')
f.writh('$'.join(ls))
f.close()
fname中的文件内容为:"中国$美国$日本" 

二维数据

CSV 用逗号分隔值(Comma-Separated Values) 数据转化的通用标准格式

用类vector<vector>方式

fo = open(fname)
ls = []
for line in fo:line = line.replace ("\n","")ls.append(line.split(","))
fo.close()#将数据吸入CSV格式的文件
ls = [[],[],[]] #二位列表
f = open(fname,'w')
for item in ls:f.write(','.join(item) + '\n')
f.close()

2.Jieba库的使用


优秀的中文分词第三方库,CMD命令中输入:

pip nstall jieba

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxTFFvhF-1580974260137)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200204214510104.png)]

jieba分词有三种模式:

  1. 精确模式:把文本精确的切分开,不存在冗余单词
  2. 全模式:把文本中所有可能的词语都扫描出来,有冗余
  3. 搜索引擎模式:在精确模式基础上,对长词再次切分
#jieba.lcut(s)  精确模式,返回一个列表
#例如
jieba.lcut("中国是一个伟大的国家")
['中国','是','一个','伟大','的','国家']#jieba.lcut(s,cut_all = True)  全模式,返回一个列表
#例如
jieba.lcut("中国是一个伟大的国家",cut_all = True)
['中国','国是','一个','伟大','的','国家']#jieba.lcut_for_search(s)  搜索引擎模式,返回一个列表
#例如
jieba.lcut("中华人民共和国是伟大的",cut_all = True)
['中华', '中华人民', '中华人民共和国', '华人', '人民', '人民共和国', '共和', '共和国', '国是', '伟大', '的']
jieba.add_word(w)  #向分词词典增加新词w

实例:文本词频统计

#人名最多统计
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
d = {}
maxx  = -1
Str = "1"
names = s.split()
for i in names:d[i] = d.get(i,0)+1if d[i] > maxx:Str = imaxx = d[i]
print(Str)
#答案:赵敏
12.wordcloud库的使用

wordcloud是一个优秀的词云展示第三方库,命令如下:

pip install wordcloud

在这里插入图片描述

由于诸多原因,所以可能会安装失败

所以我找到了一个代替方案:https://blog.csdn.net/DCclient/article/details/89818315

wordcloud库的四个运行过程

  1. 分隔:以空格分隔单词
  2. 统计:单词出现次数并过滤 过滤掉1或2个字符的单词
  3. 字体:根据统计配置字号
  4. 布局:颜色环境尺寸
w = wordcloud.WordCloud()  #代表一个文本对应的词云
w.generate(tx) #向WordClound对象w中加载文本txt
w.to_file(filenmae) #将词云输出为图像文件,.png或.jpg格式
#参数配置
w = wordcloud.WordCloud(width=100) #设置宽度
w = wordcloud.WordCloud(height=100) #设置高度
w = wordcloud.WordCloud(min_font_size =10) #设置最小字号,默认4号
w = wordcloud.WordCloud(max_font_size =20) #设置最大字号,根据高度调节
w = wordcloud.WordCloud(font_step =2) #设置词云中字号步进间隔,默认为1
w = wordcloud.WordCloud(font_payh="msth.ttc") #设置词云中字体
w = wordcloud.WordCloud(max_words =20) #设置最大单词数量,默认200
w = wordcloud.WordCloud(stop_words ={"python"}) #设置不显示单词列表
from scipy.misc import imread
mk = imread("pic.png")  #引用imread() 设置形状
w = wordcloud.WordCloud(mask=mk) #指定词云形状,默认矩形

实例:政府工作报告词云

#新时代中国特色社会主义.py
#新时代中国特色社会主义.txt文件地址:https://www.python123.io/resources/pye/新时代中国特色社会主义.txt
import jieba as j
import wordcloud as wc
#分词
f = open("新时代中国特色社会主义.txt","r",encoding='utf-8')
txt = f.read()
f.close()
ls = j.lcut(txt)
txt = " ".join(ls)
w = wc.WordCloud(font_path="msyh.ttc",\width=1000,height=700,background_color="white",\)
w.generate(txt)
w.to_file("新时代中国.png")

在这里插入图片描述

这篇关于【Python入门】——文件读写 Jieba库分词 WordCloud库词云制图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551996

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚