Python入门笔记07 | 文件和数据格式化

这篇博客详细介绍了Python中文件的类型,包括文本文件和二进制文件的特性。接着讲解了文件的打开、关闭及不同模式的打开方法,并展示了文件内容的读取与写入操作。此外,还探讨了一维和二维数据的格式化,如CSV格式,并介绍了wordcloud库在生成词云图方面的应用。
摘要由CSDN通过智能技术生成

Python入门笔记07 | 文件和数据格式化

一、文件的类型
文件是数据的抽象和集合
(1)文件是存储在辅助存储器上的数据序列
(2)文件是数据存储的形式
(3)文件的展现形态:文本文件和二进制文件

1. 文本文件:由单一特定编码组成的文件,如UTF-8编码

由于存在编码,也被看成是存储着的长字符串
例如:.txt文件、.py文件


  • 在这里插入图片描述
    2.二进制文件 :直接由比特0和1组成,没有统一字符编码

一般存在二进制0和1的组织结构,即文件格式
例如:.png文件、.avi文件


  • 在这里插入图片描述
    二、文件的打开和关闭
    文件处理的步骤:打开-操作-关闭
    在这里插入图片描述
    在这里插入图片描述
    1. 文件的打开
    在这里插入图片描述

(1)绝对路径:\在python中意为转义符,因此在提供路径时,应该使用 / 或 \ 表示 \
(2)相对路径:从可执行程序的当前目录起,寻找路径
(3)当前程序与所打开文件在相同目录下:直接使用文件名称

在这里插入图片描述
2. 打开模式
在这里插入图片描述

  • 实例
    在这里插入图片描述
    3. 文件的关闭
    在这里插入图片描述
    三、 文件内容的读取
    1. 三种文件的读取方法
    在这里插入图片描述
    在这里插入图片描述
    2.文件的全文本操作:遍历文件的全部信息
    (1)方法1:一次读入,统一处理
    在这里插入图片描述
    (2)方法2:按数量读入,逐步处理
    在这里插入图片描述
    3. 文件的逐行操作
    (1)方法1:一次读入,分行处理
    在这里插入图片描述
    (2)方法2:分行读入,逐行处理
    在这里插入图片描述
    四、 数据的文件写入
    在这里插入图片描述
    在这里插入图片描述

  • 在这里插入图片描述

–此时文件的指针位于文件的在最后面,此时再调用for…in的方式,遍历的是从指针当前位置的文件结尾处取出其中每一行并打印输出,而写入文件的内容在指针前,因此这段代码不输出任何内容
–需要调整当前文件的指针,回到文件初始位置

在这里插入图片描述

  • 实例11:自动轨迹的绘制

  • 需求:根据脚本来绘制图形,不是写代码,而是写数据绘制轨迹

数据脚本是自动化最重要的第一步

  • 基本思路
    –步骤1:定义数据文件格式(接口)
    –步骤2:编写程序,根据文件接口解析参数绘制图形
    –步骤3:编址数据文件

  • 数据接口定义
    在这里插入图片描述

  • 代码

#AutoTraceDrwa.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","")
    #map函数是Python提供的内嵌函数,将第一个参数的功能作用于第二个参数的每一个元素
    datals.append(list(map(eval,line.split(","))))
f.close()
print(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]:
        t.right(datals[i][2])
    else:
        t.left(datals[i][2])

在这里插入图片描述

  • 效果
    在这里插入图片描述
    五、 一维数据的格式化和处理
    1. 数据组织维度
    维度:一组数据的组织形式
    一维数据:由对等关系的有序或无序顺序构成,采用线性方式组织 -> 对应列表、数组、集合等概念
    二维数据:由多个一维数据构成,是一维数据的组合形式 -> 表格
    高维数据:仅利用最基本的二元关系展示数据间的复杂结构 ->键值对
    操作周期:存储->表示->操作
    在这里插入图片描述
    2. 一维数据的表示
  • 如果数据间有序:使用列表类型
  • 如果数据间无序:使用集合类型
    3. 一维数据的存储
    (1)空格分隔

使用一个或多个空格分隔进行存储,不换行
缺点:数据中不能存在空格

(2)逗号分隔

使用英文半角逗号分隔数据进行存储,不换行
缺点:数据中不能存在英文逗号

(3)其他方式

使用其他符号或符号组进行分隔,建议采用特殊符号
缺点:需要根据数据特点定义,通用性较差

4. 一维数据的处理:存储 <-> 表示
(1)从空格分隔的文件中读入数据

在这里插入图片描述
(2)从特殊符号分隔的文件中读入数据
在这里插入图片描述
(3)采用空格分隔方式将数据写入文件
在这里插入图片描述
(4)采用特殊分隔方式将数据写入文件
在这里插入图片描述
六、 二维数据的格式化和处理
1. 二维数据的表示:使用列表类型 -> 二维列表
2. CSV格式与二维数据的存储

CSV:Comma-Separated Values;
用逗号分割值的一种存储方式
–国际通用的一二维数据存储格式,一般.csv扩展名
–每行一个一维数据,采用逗号分割,无空行

在这里插入图片描述
特殊规定
(1)如果某个元素缺失,逗号仍要保留
(2)二维数据的表头可以作为数据存储,也可以另行存储
(3)一般索引习惯 ls[row][column],先行后列
3. 二维数据的处理
(1)从CSV格式的文件中读入数据
在这里插入图片描述
(2)将数据写入CSV格式的文件
在这里插入图片描述
(3)二维数据的逐一处理 二层循环
在这里插入图片描述
**七、 wordcloud库的使用

wordcloud库是优秀的词云展示第三方库
–作用:将一段文本变成一个词云
–词云:以词语为基本单位通过图形可视化的方式直观和艺术地展示出来

1. 基本使用
wordcloud库把词云当做一个WordCloud对象

1)wordcloud.WordCloud()代表一个文本对应的词云
2)可以根据文本中词语出现的频率等参数绘制词云
3)绘制词云的形状、颜色、尺寸都可以设定

2. 常规方法

w = wordcloud.WordCloud()

1)以WordCloud对象为基础
2)配置参数、加载文本、输出文件

在这里插入图片描述
(1)步骤:
1)配置对象参数
2)加载词云文本
3)输出词云文件
在这里插入图片描述
(2)配置对象参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 实例12 政府工作报告词云
  • 需求:对于政府工作报告等政策文件,如何直观理解?->生成词云&优化词云
  • 代码
#GovRptWordCloudv1
import wordcloud
import jieba
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")
w.generate(txt)
w.to_file("grwordcloud.jpg")
  • 结果
    在这里插入图片描述
  • 更有形的词云(代码)
#GovRptWordCloudv2
import wordcloud
import jieba
from imageio import imread
mask = imread("fivestar.jpg")
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("grwordcloud.jpg")
  • 更有形的结果
    在这里插入图片描述
  • 第七周测验题
  1. 文本的平均列数
    在这里插入图片描述
f = open("latex.log")
s,c = 0,0
for line in f:
    line = line.strip("\n")
    if line == "":
        continue
    else:
        s += len(line)
        c += 1
print(round(s/c))

注意:for line in f获取的line包含每行最后的换行符(\n),所以,去掉该换行符进行统计。

  1. CSV格式清洗与转换
    在这里插入图片描述
f = open("data.csv")
ls = f.readlines()
ls = ls[::-1]
lt = []
for item in ls:
    item = item.strip("\n")
    item = item.replace(" ","")
    lt = item.split(",")
    lt = lt[::-1]
    print(";".join(lt))
f.close()

注意:使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格。

注:笔记内容根据慕课:Python语言程序设计(北京理工大学 嵩天、黄天羽、礼欣)授课内容整理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值