ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python语言程序设计(MOOC 嵩天)第七章 学习笔记(0226)

2020-03-01 18:39:13  阅读:442  来源: 互联网

标签:文件 MOOC python 嵩天 词云 ls txt 数据 fo


第七章 文件和数据格式化

数据格式化:将一组数据按照一定规格和式样进行表示、储存、运算

7.1 文件的使用

7.1.1 文件的类型

文件是数据抽象的集合(辅助存储器上的数据序列)
文件的展示形态:文本文件、二进制文件
文件:由单一特定的编码组成(类似字符串)
文本:tf = open (“f.txt”,“rt”)
print(tf.readline())
tf.close
二进制:bf = open (“f.txt”,“rb”)
print(bf.readline())
bf.close

7.1.2 文件的打开和关闭

a.open(<文件名(路径)> , <打开方式 rt or rb//读或写>)
#在python中 \ 代表转义符,所以输入绝对路径时使用 \ or /
#也可以使用相对路径
#打开模式,见后
读文件:
a.read(size)
a.readline(size)
a.readlines(hint)
写文件:
a.write(s)
a.writelines(lines)
a.seek(offset)
a.close() #<变量名>.close

打开模式:
‘r’:只读(默认),若文件不存在则报错
‘w’:覆盖写模式,文件不存在则创建,已存在则覆盖
‘x’:创建写模式,文件不存在则创建,已存在则报错
‘a’:追加写模式,文件不存在则创建,已存在则在最后追加内容
‘b’:二进制
‘t’:文本(默认)
‘+’:在原功能上增加功能,同时读写

7.1.3 文件内容的读取:

< f >.read(size):读入全部的内容,如果给出参数size的值,则读取前size个字符
< f >.readline(size):读入一行内容,如果给出参数size的值,则读取该行的前size长度的字符
< f >.readlines(hint):读入文件所有行,如果给出参数size的值,则读入前hint行(每行作为一个元素,构成列表)
eg:
遍历全文本:方法一

fname = input("请输入要打开文件的名称:")
fo = open(fname,"r")
txt = fo.read()		#一次性读入,若文件过大过于耗费资源
#对全文本txt进行处理
fo.close()

遍历全文本:方法二

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() :
	#对 txt 进行处理
	print (line)
fo.close()

逐行遍历:方法二

fname = input("请输入要打开文件的名称:")
fo = open(fname,"r")
for line in fo :	#分行读入,逐行处理
	#对 txt 进行处理
	print (line)
fo.close()

7.1.4 数据的文件写入

< f >. write (s):向文件写入一个字符串或字节流
< f >. write lines(lines):将一个元素全为字符串的列表写入文件
#写入后各元素间没有逗号、引号
< f >. seek (offset):改变当前文件操作指针的位置
0 - 文件开头 1 - 当前位置 2 - 文件末尾

fo = open("output.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)	#关键操作,若无seek函数,输出为空
for line in fo:
	print (line)
fo.close()

7.2 自动轨迹绘制

根据脚本来绘制图形:
①定义数据文件格式(接口)
②编写程序,根据文件接口解析参数绘制图形
③编制数据文件
式样中数据文件的格式:每行6个数字

#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(","))))  #以逗号分割,map函数对每个元素做eval,list列表化,加到ls后面
# datals,一个列表,列表中的每个元素都是列表,脚本中的每一行数据为一个元素
#自动绘制
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]:    #如果i行的第1个数据为1则右转
        t.right(datals[i][2])
    else:
        t.left(datals[i][2])

7.3 一维数据的格式化及处理

一维数据:由对等关系的有序或无序数据构成,采用线性结构组织(列表、数组、集合等概念)
二维数据:由多个一维数据构成,是一维数据的组合形式
多维数据:由一维数据或二维数据在维度上扩展形成
高维数据:仅利用最基本的二元关系,展示数据间的复杂结构
操作周期:存储(存储格式)、表示(数据类型)、操作(操作方式)
(1)一维数据的表示
if 数据间有序:使用列表类型
if 数据间无序:使用集合类型
(2)一维数据的存储
空格分隔、逗号分隔、其他符号或符号组和进行分隔
(3)一维数据的处理
从文件中读入数据:

txt = open (fname).read()
ls = txt.split()	# split函数的参数最为关键
f.close()

将数据写入文件:

ls = ["列表内容"]
txt = open(fname,"w")
f.write(' ',join(ls))	# join函数前置的参数最为关键
f.close()

7.4 二维数据的格式化及处理

(1)二维数据的表示
使用二维列表:每个元素都是一个列表,代表表格中的一行或一列(使用两层for循环进行遍历)
(2)CSV格式与二维数据的储存
CSV:使用逗号分隔,国际上通用的一二维数据存储格式
#每行一个一维数据,采用逗号分隔,无空行
默认约定:
#如果某个元素缺失,保留逗号
#二维数据的表头可以作为数据存储,也可以另行存储
#逗号为英文半角,逗号与数据之间无需空格
一般索引习惯:
#ls是一个列表,一般来说 ls [ row ] [ clumn ] 先行后列
#一般来说,外层列表存储为行,即按行存
(3)二维数据的读入处理

fo = open(read)
ls = []
for line in fo:
	line = line.replace("/n","")
	ls = ls.append(line.split(","))		#ls是一个包含二维数据的二维列表
f.close()

(4)二维数据写入CSV文件

ls = [ [],[],[] ]		#ls是一个包含二维数据的列表
f = open(fname,"w")
for item in ls:
	f.write(",".join(item) + '/n')
f.close()

(5)遍历二维数据元素

ls = [ [],[],[] ]		#ls是一个包含二维数据的列表
for row in ls:
	for column in row:
		do...

7.5 wordcloud库的使用

#中英文词云差异:中文文本无法根据空格分词,应先用jieba分词
(1)定义
词云:将词语通过图形可视化的方式,进行直观、艺术地展示
wordcloud库把词云当作一个WordCloud对象
wordcloud.WordCloud():代表一个,文本对应的词云
#wordcloud可以根据文本中词语出现的频率等参数绘制词云
#词云的形状、尺寸、颜色都可以设定
(2)基本操作函数
w = wordcloud.WordCloud():
w.generate(txt):向WordCloud对象w中加载文本txt
w.to_file(filename):将词云输出为图像文件,jpg 或 png格式
(3)词云绘制步骤
配置对象参数、加载词云文本、输出词云文件
#以空格分隔单词、统计单词出现次数并过滤、根据统计配置字号、确定颜色环境尺寸
(4)配置对象参数
w = wordcloud.WordCloud(<参数>)
width:指定词云对象生成图片的宽度,默认400像素
height:指定词云对象生成图片的高度,默认200像素
min_font_size:指定词云中字体的最小字号,默认4号(只出现一次的单词)
max_font_size:指定词云中字体的最大字号,根据高度自动调节
font_step:指定词云中字体的步进间隔,默认为1
font_path:指定字体文件路径,默认为None
max_words:指定词云显示的最大单词数量
stop_words:指定词云的排除词列表,即不显示的单词列表
backgroud_color:指定词云图片的背景颜色,默认为黑色
mask:通过给定图片的文件格式指定词云形状,默认为长方形

from scipy.misc import imread
mk = imread("pic.png")
w = wordcloud.WordCloud( mask=mk )

(5)中文词云实例

import wordcloud
import jieba
txt = "bala bala"		#获得要处理的文本内容
w = wordcloud.WordCloud( width=1000,\
	font_path="msyh",height=700 )
w.generate(" ".join(jieba.lcut(txt)))
#使用jieba库中的lcut将txt中文本分词,保存入一个列表
#使用join函数用空格,将上述列表中的元素连接起来
#使用w.generate将文本输入词云对象w
w.to_file("pywcloud.png")

7.6 政府工作报告词云

设计思路:
读取文件、分词整理;设置并输出词云;观察结果、迭代优化

#GovRptWordCloudV1.pv
import wordcloud
import jieba
from scipy.misc import imread
mask = imread("fivestar.png")
f = open("新时代中国特色社会主义.txt","r",encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)		#获得要处理的文本内容
w = wordcloud.WordCloud( width=1000,\
	font_path="msyh",height=700,background_color="white",\
	max_words=15,mask=mask )
w.generate(txt)
w.to_file("grwordcloud.png")
阿娇一定要好好学习 发布了10 篇原创文章 · 获赞 0 · 访问量 237 私信 关注

标签:文件,MOOC,python,嵩天,词云,ls,txt,数据,fo
来源: https://blog.csdn.net/yq1271/article/details/104516223

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有