第七周 文件和数据格式化
文件的使用
文件的两种展示形态:文本文件和二进制文件,但都以二进制01形成存储
文本文件:有统一编码
二进制文件:在01之上没有任何编码
以文本形式打开文件:
以二进制形式打开文件:
- 文件的打开关闭
open:
- 文件路径
- 文件的打开模式
例子:open不给模式默认rt模式 有+号可以读写文件
-
文件关闭:文件句柄.close()
程序正常退出的时候也会关闭文件 -
文件内容的读取
读入一行:readline read返回的是一个大字符串
读入所有行:readlines 返回的是一个列表
听说hint是读入的字节长度,即限定长度内的行,并不是前hint行哦
例子:
这样耗费内存大,速度慢
分批读入:read(2)读入两个字节
对于分行(每一行结束有回车)的文本文件,更多地用逐行遍历:
这个列表会消耗很多内存,分行读入:
如果保错加个encoding=“utf-8”
-
数据的文件写入
注意:writelines写入是将各个字符串元素拼接在一起写入文件的,各个元素之间没有换行也没有空格
改变文件操作指针位置:seek
在一个程序中同时读写,使用指针位置。例子:
实例11:自动轨迹绘制
通过脚本(数据接口)读入数据来绘制,而不是把数据写死在代码里
代码和数据贴在下面:
#根据文件数据绘制轨迹
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","")
#1.将一行根据","进行分割为若干个字符串
#2.map:将第一个参数的功能(去除"")作用于第二个参数(列表或集合)的每个元素
#3.把所有字符串转化为数字的数据,存成一个列表,加入datals中(列表套列表)
datals.append(list(map(eval,line.split(","))))
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])
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0
一维数据的格式化和处理
分类:
- 一维数据:线性方式组织,对于列表,数组,集合等概念
- 二维数据:表格
- 多维数据:表格考虑时间不同
- 高维数据:仅利用最基本的二元关系展示数据间的复杂结构(键值对)
- 一维数据的表示
数据间有序:列表,数据间无序:集合 for循环遍历 - 一维数据的存储
存储分割方式:空格分割,逗号分割,特殊符号分割
特点:不换行,不能包含分割符号 - 一维数据的处理
例子:
join指的是将ls的元素之间增加空格符号的大字符串
二维数据的格式化和处理
- 二维数据的表示
使用二维列表,即=大列表套小列表=
所以表示可总结:
- CSV数据存储格式:数据转换通用格式
如果数据包含逗号:看具体程序,有些两边加引号,或全面加转义符
- 二维数据的处理
也就是对于写的每一行:各元素之间加逗号,每一行之间加回车
重点掌握join和split函数对数据的处理
模块6:wordcloud库
wordcloud是库名
WordCloud是一个词云对象
常规方法:
- 配置对象参数
font_step是从最小字号开始根据出现频率逐渐变大的每一次变大的不进值
不知道这图片里是不是写错了,最大默认应该是200
指定词云形状
例子:
这是将一段文本通过jieba的lcut函数分割为分词列表,再用join将列表转换为用空格分隔每一个元素的长字符串,给generate
实例12:政府工作报告词云
原理同模块,需要注释的写在代码里啦。
经弹幕提示scipy不再支持imread,得改用第三方库,所以形状就没搞了
import jieba
import wordcloud
#修改词云形状
# from scipy.mise import imread
# mask =imread("fivestar.png")
# 形状图片要求背景是白色,其他地方是形状
#读文件
f=open("关于实施乡村振兴战略的意见.txt","r",encoding="utf-8")
t=f.read()#文件读出字符串放t
f.close()
ls=jieba.lcut(t)#字符串分词为列表放ls
txt="".join(ls)#列表按空格分隔为字符串
#词云的处理
w=wordcloud.WordCloud(font_path="msyh.ttc",width=1000,height=700,background_color="blue")
# (mask=mask)
w.generate(txt)
w.to_file("wordcloud.jpg")