7 Python文件和数据格式化

文件和数据格式化

一、文件的使用

1.文件类型

①文件是数据的抽象和集合

-文件是存储在辅助存储器上的数据序列

-文件是数据存储的一种形式

-文件的展现形态:文本文件和二进制文件(存储形式都是二进制)

②文本文件:由单一特定编码组成的文件,如.txt、.py

③二进制文件:没有统一字符编码,如.png、.avi

2.文件的打开和关闭

1.文件的打开

在这里插入图片描述

①D:\PYE\f.txt 表示为:“D:/PYE/f.txt"或"D:\PYE\f.txt”

②文件的打开模式

  • ‘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')       #二进制

2.文件的关闭

<变量名>.close()

3.文件内容的读取

① .read(size=-1):读入全部内容,若给出参数,读入前size长度

② .readline(size=-1):读入一行内容,若给出参数,读入该行前size长度

③ .readlines(hint=-1):读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

遍历全文本
#一次性读入
fo=open(filename,"r")
txt=fo.read()
#对txt进行处理
fo.close

#分部分读入
fo=open(filename,"r")
txt=fo.read(2)    #从文件中读入两个字节
while txt !="":
    	#对txt进行处理
        txt=fo.read(2)
fo.close
逐行遍历
#一次读入,for...in
fo=open(filename,"r")
for line in fo.readlines():
    print(line)
fo.close

#逐行
fo=open(filename,"r")
for line in fo:
    print(line)
fo.close
4.数据的文件写入

① .write(s):向文件写入一个字符串或字节流

② .writelines(lines):将一个元素全为字符串的列表写入文件

③ .seek(offset):改变当前文件操作指针位置,offset(0-文件开头;1-当前位置;2-文件结尾)

  • 如f.seek(0):回到文件开头
>>> ls=["中国","法国","英国"]
>>> fo=open("lalala.txt","w+")
>>> fo.writelines(ls)
>>> fo.seek(0)
0
>>> for line in fo:
	print(line)
	
中国法国英国
>>> fo.close()

二、实例11:自动轨迹绘制

1.分析

-自动轨迹绘制:根据脚本来绘制图形

在这里插入图片描述

2.代码

①定义数据文件格式/接口

  • 参数1:行进距离
  • 参数2:0表示左转,1表示右转
  • 参数3:转向角度
  • 参数456:RGB三个通道颜色

②编写程序,根据文件接口解析参数绘制图形

③编制数据文件

-map函数,将第一个参数的功能作用于第二个参数

#AutoTraceDraw.py
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(","))))
f.close()

#自动绘制
#d[1]行进距离;d[2]0表示左转1表示右转;d[3]转向角度;d[456]RGB三个通道颜色
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])

data.txt

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

在这里插入图片描述

三、一维数据的格式化和处理

1.数据组织的维度

①一维数据:由对等关系的有序或无序数据构成,采用线性方式组织

-对应列表、数组、集合等概念

②二维数据:由多个一维数据构成,是一维数据的组合形式

③多维数据:由一维或二维数据在新维度上扩展形成

④高维数据:仅利用最基本的二元关系展示数据间的复杂结构

2.一维数据的表示(数据类型)

①若数据间有序:使用列表类型[]

②若数据间无序:采用集合类型{}

3.一维数据的存储(存储格式)

①空格分隔:使用一个或多个空格分隔进行存储,不换行

②逗号分隔:使用逗号","分隔进行存储,不换行

③使用其他特殊字符

4.一维数据处理/操作(操作方式)

①从空格分隔的文件中读入数据

txt=open(fname).read()
ls=txt.split()
f.close()

②从特殊符号分隔的文件中读入数据

txt=open(fname).read()
ls=txt.split("$")
f.close()

③采用空格分隔方式写入文件

.join() 方法:将join前面的字符串分隔放置到后面的join参数中各元素之间

ls=['China','America','Korea']
f=open(fname,'w')
f.write(' '.join(ls))  
f.close()

四、二维数据的格式化和处理

1.二维数据的表示

①使用二维列表表示二维数据

2.CSV格式与二维数据的存储

①CSV:Comma-Separated Values,用逗号分隔值的一种方式,每行一个一维数据,无空行

②扩展名为.csv,一般编辑器和Excel都可以读入或另存为csv文件

③一般索引习惯:ls[row][column],先行后列

3.二维数据的处理

①数据的读入

fo=open(fname)
ls=[]
for line in fo:
    line=line.replace("\n","")
    ls.append(line.split(","))
fo.close()

②数据的写入

ls=[[],[],[]]  #二维列表
f=open(fname,'w')
for item in ls:
    f.write(','.join(item)+'\n')
f.close()

五、模块6:wordcloud库的使用

1.wordcloud

词云,第三方库

2.wordcloud库的安装
pip install -i https://pypi.douban.com/simple/ wordcloud
3.wordcloud的使用

①wordcloud库把词云当作一个WordCloud对象

-可以根据文本中词语出现的频率等参数绘制词云

-绘制词云的形状、尺寸和颜色都可以设定

②步骤:配置对象参数、加载词云文本、输出词云文件

w=wordcloud.WordCloud() 新建一个词云对象w

  • .generate(txt):向WordCloud对象中加载文本txt
  • .to_file(filename):将词云输出为图像文件(png/jpg)

③参数

  • width:指定词云生成图片的宽度,默认400像素

  • height:指定词云生成图片的高度,默认200像素

  • min_font_size:指定词云中字体最小字号,默认4号

  • max_font_size:指定词云中字体最大字号,根据高度自动调节

  • font_step:指定词云中字体字号的步进间隔,默认为1

  • font_path:指定字体文件的路径(msyh.ttc,微软雅黑)

  • max_words:指定词云中显示的最大单词数量,默认200

  • stop_words:指定词云的排除词列表,即不显示的单词列表

  • mask:指定词云形状,默认为长方形,需要引用imread()函数

    from scipy.misc import imread
    mk=imread("pic.png")  #读取一个图片效果
    w=wordcloud.WordCloud(mask=mk)
  • background_color:指定词云的背景颜色,默认为黑色

将“life is short,you need python”转换为词云
import jieba
import wordcloud
txt="程序设计语言是计算机能够理解识别用户操作意图的一种交互体系,它按照特定规则组织计算机指令,使计算机能够自动进行各种运算处理。"
w=wordcloud.WordCloud(width=1000,\
                      font_path="msyh.ttc",height=700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")

在这里插入图片描述

六、实例12:政府工作报告词云

1.文件
https://python123.io/resources/pye/新时代中国特色社会主义.txt
https://python123.io/resources/pye/关于实施乡村振兴战略的意见.txt
2.实例

①基本思路

  • 步骤1:读取文件,分词整理
  • 步骤2:设置并输出词云
  • 步骤3:观察结果,优化迭代

②《新时代中国特色社会主义》词云

#012 WordCloudv1.py
import jieba
import wordcloud
f=open("新时代中国特色社会主义.txt","r",encoding="utf-8")
t=f.read()
f.close()
ls=jieba.lcut(t)
txt=" ".join(ls)
#配置词云
w=wordcloud.WordCloud(font_path="msyh.ttc",\                width=1000,height=700,background_color="white",\
                      max_words=15)
w.generate(txt)
w.to_file("11.png")

③有形状的词云

#012 WordCloudv1.py
import jieba
import wordcloud
from scipy.misc import imread
mask=imread("fivestart.png")
f=open("关于实施乡村振兴战略的意见.txt","r",encoding="utf-8")
t=f.read()
f.close()
ls=jieba.lcut(t)
txt=" ".join(ls)
#配置词云
w=wordcloud.WordCloud(font_path="msyh.ttc",mask=mask,\
                      width=1000,height=700,background_color="white",\
                      )
w.generate(txt)
w.to_file("11.png")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值