文件和数据格式化
-格式化
-字符串格式化:format()将字符串按照一定规格和式样进行规范
-数据格式化:将一组数据按照一定规格和式样进行规范:表示、存储、运算等
一、文件使用
1、文件的类型
-文件时存储再辅助存储器上的数据序列
-文件时数据存储的一种形式
-文件是展示形态:文本二进制文件
-本质上,所有文件都是二进制形式存储
-形式上,所有文件采用两种方式展示
1-1、文本文件:文件是数据的抽象和集合
-由单一特定编码组成的文件,如UTF-8编码
-由于存在编码,也被看成是存储着的字符串
-适用于例如:.txt文件、.py文件
1-2、二进制文件
-直接由比特0和1组成,没有统一字符编码
-一般存在二进制0和1的组织结构,即文件格式
-适用于例如:.png文件、.avi文件
2、文件的打开关闭
-文件处理的步骤:代开-操作-关闭
-打开文件 : a=open(,)
-关闭文件:a.close()
-读文件函数:
-a.read(size)
-a.readline(size)
-a.readlines(hint)
-写文件:
-a.write(s)
-a.writelinrs(lines)
-a.seek(offset)
2-1、文件的打开
-<变量名> = open(<文件路径和名称>,<打开模式文本或二进制和读或写>)
打开模式
文件的打开模式 | 描述 |
---|---|
“r” | 只读模式,默认值,如果文件不存在,返回FileNotFoundError |
“w” | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
“X” | 创建写模式,文件不存在则创建,存在则返回FileExistsError |
“a” | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
“b” | 二进制文本模式 |
“t” | 文本文件模式,默认值 |
“+” | 与r/w/a/x一同使用,在源功能基础上增加同时读写功能 |
举例
f = open("python课堂笔记/static/f.txt") #文本形式,只读模式,默认值
f = open("python课堂笔记/static/f.txt","rt") #文本形式,只读模式,同默认值
f = open("python课堂笔记/static/f.txt","w") #文本形式,覆盖写模式
f = open("python课堂笔记/static/f.txt","a+") #文本形式,追加写模式+读模式、
f = open("python课堂笔记/static/f.txt","x") #文本形式,创建写模式
f = open("python课堂笔记/static/f.txt","b") #二进制形式,只读模式
f = open("python课堂笔记/static/f.txt","wb") #二进制模式,覆盖写模式
2-2、文件的关闭
-<变量名>.close()
3、文件内容的读取
操作方法 | 描述 |
---|---|
.read(size = -1) | 读取全部内容,如果给出参数,读入前size长度。举例 s= f.read(2)#中国是一个伟大的国家。输出:中国 |
.readline(size = -1) | 读入一行内容,如果给出参数,读入该行前size长度。举例:s = f.readline() 输出:中国是一个伟大的国家 |
.readlines(hint = -1) | 读入文件所有行,以每行为元素形成列表。如果给出参数,读入前hint行。s=f.readlines() 输出:[“中国是一个伟大的国家”] |
读举例
#遍历全文本,分批读入
fname = input("请输入要打开的文件名:")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
#txt进行处理
txt = fo.read(2)
fd.close()
#文件逐行处理
fname = input("请输入要打开的文件名:")
fo = open(fname,"r")
for line in fo:
print(line)
fo.close()
4、数据的文件写入
操作方法 | 向文件写入一个 |
---|---|
.write(S) | 向文件写入一个字符串或字节流。举例:f.write(“中国是一个伟大的国家”) |
.writelines(lines) | 将一个元素全为字符串的列表写入文件。举例:ls =[“中国”,“美国”,“法国”];输出:中国美国法国 |
.seek(offset) | 改变当前文件操作指针的位置,offset含义如下:0-文件开头、1-当前位置、2-文件结尾。举例:fseek(0)#回到文件开 |
写举例
fo = open("output.txt","w+")
ls = ["中国",,法国","美国"]
fo.writelines(ls)#写入字符串列表
fo.seek(0) #将指针回到开头
for line in fo:
print(line)
fo.close()
二、数据组织的维度
-数据的操作周期
-存储 <-> 表示 <-> 操作
1、一维数据的格式化和处理
1-1、一维数据的表示
-数据间有序
-列表类型可以表达一维有序数据
-for循环可以遍历数据,进而对每个数据进行处理
-数据间无序
-集合类型可以表达一维无序数据
-for循环可以遍历数据,进而对每个数据进行处理
1-2、一维数据的存储
-存储方式一:空格分隔
-使用一个或多个空格分隔进行存储,不换行
-缺点:数据中不能存在空格
-存储方式二:逗号分隔
-使用一个或多个逗号分隔进行存储,不换行
-缺点:数据中不能存在英文逗号
-存储方式三:其它方式
-使用其它符号或符号组合分隔,建议采用特殊符号
-缺点:需要根据数据特点定义,通用性差
1-3、一维数据处理
1)实例
txt = open(fname).read()#从空格分隔文件读取
ls = txt.split()
f.close
txt = open(fname).read()#从$分隔文件读取
ls = txt.split("$")
f.close
ls = ["1","2","3","4"]
f = open(fname,"w")
f.write(" ".join) #空格写入
f.close()
2、二维数据格式化和处理
2-1、二维数据的表示
-列表类型可以表达二维数据
-使用二维列表
-使用两层for循环遍历每个元素
-外层列表中每个元素对应一行,也可以对应一列
2-2、CSV格式与二维数据的存储
-csv数据存储格式
-国际通用的一二维数据存储格式,一般.csv扩展名
-每行一个一维数据,采用逗号分隔,无空行
-Excel和一般编辑软件都可以读入或另存为csv文件
-如果某个元素缺失,逗号仍要保留
-二维数据的表头可以作为数据存储,也可以另行存储
-逗号采用英文半角逗号,逗号和数据之间无额外空格
-二维数据的存储
-按行或者按列都可以具体由程序决定
-一般索引习惯:ls[row][column],先行后列
2-3、二维数据的处理
#从CSV格式的文件中读入数据
fo = open(fname)
ls = []
for line in fo:
line = line.replace("\n","")#去掉换行
ls.append(line.split(","))
fo.close()
#将数据写入CSV格式的文件
ls = [[],[],[]] #二维列表
发= open(fname,"W")
for item in ls:
f.write(",".join(item)+"\n")
f.close()
三、wordcloud库概述
-wordcloud是优秀的词云展示第三方库,需使用pip安装
1、wordcloud库的基本使用
-wordcloud库把词云当作一个wordcloud对象
-wordcloud.WordCloud()代表一个文本词云
-可以根据文本中词语出现的频率等参数绘制词云
-绘制词云的形状、尺寸和颜色都可以设定
1-1、wordcloud库的常规使用
-w = wordcloud.WordCloud()
-以WordCloud对象为基础
-配置参数、加载文本、输出文件
-分隔:以空格分隔单词
-统计:单词出现的次数并过滤
-字体:根据统计配置字号
-布局:颜色环境尺寸
1)基本使用方法
方法 | 描述 |
---|---|
w.generate(txt) | 向WordCloud对象中加载文本txt,w.generate(“python and wordcloud”) |
w.to_file(filename) | 将词云输出为图像文件,.png或.jpg格式。w.to_file(“outfile.png”) |
** 实例**
import wordcloud
c = wordcloud.WordCloud()
c.generate("wordcloud by python")
c.to_file("wordcloud.png")
2)配置对象参数
w = wordcloud.WordCloud(<参数>)
参数 | 描述 |
---|---|
width | 指定词云对象生成图片的宽度,默认为400像素。w=wordcloud.WordCloud(width = 600) |
height | 指定词云对象生成图片的高度,默认为200像素。w=wordcloud.WordCloud(height = 400) |
min_font_size | 指定词云中字体的最小字号,默认为4号。w=wordcloud.WordCloud(min_font_size = 10) |
max_font_size | 指定词云中字体的最大字号,根据高度自动调节。w=wordcloud.WordCloud(max_font_size = 20) |
font_size | 指定词云中字体字号的步进间隔,默认为1。w = wordcloud.WordCloud(font_step = 2) |
font_path | 指定字体文件的路径,默认为NOne。w=wordcloud.WordCloud(font_path = “msyh.ttc”) |
max_words | 指定词云显示的最大单词数量,默认200 |
stop_words | 指定词云的排除此列表,即不显示的单词列表。w=wordcloud.WordCloud(stop_words={“python”}) |
mask | 指定词云的形状,默认为长方形,需要引用imread()函数。from scipy.misc import imread;mk = imread(“pic.png”);w=wordcloud.WordCloud(mask = mk) |
background_color | 指定词云图片的背景颜色,默认为黑色。w=wordcloud.WordCloud(background_color = “white”) |
应用实例
import wordcloud
import jieba
txt = open("E:\web学习\python课堂笔记\static/threekingdom.txt","r",encoding="utf-8").read()
excludes = {"将军","却说","荆州","二人","不可","不能","如此","商议","如何","主公","军士","左右","军马","引兵","次日","大喜"\
,"天下","东吴","于是","今日","不敢","魏兵","陛下","一人","都督","人马","不知","汉中","只见","众将","后主","蜀兵"\
,"上马","大叫","太守","此人","夫人","先主","后人","背后","城中","天子","一面","何不","大军","忽报","先生","百姓"\
,"何故","然后","先锋","不如","赶来","原来","令人","江东","下马","喊声","正是","徐州","忽然","因此","成都","不见"\
,"未知","大败","大事","之后","一军","引军","起兵","军中","接应","进兵","大惊","可以","以为","大怒","不得","心中"\
,"下文","一声","追赶","粮草","孔明曰"}
w = wordcloud.WordCloud(width=1000,\
height=700,stopwords=excludes,max_words=15,\
font_path="python课堂笔记/static/simsun.ttc")
w.generate("".join(jieba.lcut(txt)))
w.to_file("txt.png")