【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使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操