python - 读写程序

先恭喜自己在第九周达成成就:没迟到没睡觉,课上认真课后努力(hhh)

这节课讲的读写程序(读很多格式的数据,like csv、xml、json、xml、html)

开始的时候先回顾了一下python简单文件的读写,用刘老师的话来说就是不常用但要讲到的方法
打开一个文件就是 input = open('filename','r')
读取文件中的内容到一个字符串content = input.read()
关闭文件input.close()
按行读取文件line = input.readline()

完了还回顾了一下numpy读写矩阵(就是之前的作业)

(不得不说我真的是老师讲了之后才知道numpy可以直接读写矩阵555,当时我还觉得我写的代码很伟大555是我太天真)言归正传,用下面这两个方法就可以了:
np.save('filename',juzhen)
np.load('filename)

举个例子:
例
需要注意的是,不管是save还是load针对的都是二进制文件,而不是文本文件

顺便插入一下文本文件和二进制文件的区别(c#上张老师有讲过来着的,划重点 ,常识常识):

1、编码上的区别:文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。而二进制文件是基于值编码的文件,你可以根据具体应用,自定义编码。

2、译码难易上的区别:文本文件编码基于字符定长,译码容易;但二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些;

文本工具打开一个文件,首先读取文件物理上所对应的二进制比特流,然后按照所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。记事本无论打开什么文件都按既定的字符编码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了,解码和译码不对应。文本文件的存储与其读取基本上是个逆过程。而二进制文件的存取与文本文件的存取差不多,只是编/解码方式不同而已。

然后讲一下pandas读取csv文件,其实也是有内置的函数可以直接做到的,高级的它可以自动进行类型推断:pd.read_csv()
然后可以进行相应的参数设置(这边给出老师上课提到的那几个参数):

header 分配默认列名
name 手动定义列名
index_col = 'xxx' 指定xxx列队纵向索引
sep 选择分隔符
na_values 设置用于代替NAN的值
nrows 只读取前几行

讲完pandas读取csv之后顺其自不然地也就讲了写入csv文件,也有内置函数,是啥呢……frame.to_csv('filename')里面也有对应的参数设置……这个和上面那个read_csv()差不太多的样子,以此类推吧- -

顺便讲到如何让处理畸形的csv数据,(刚开始看到这个大标题我决定很神奇,上课居然可以学处理畸形数据,好兴奋,然后……)老师给出的说明是:当csv文件结构有问题时,pd.load_csv()函数无法读取,要用py自带的读取方式,对数据进行整理转换为DATAFRAME格式(不小心就全大写输入了氦,我什么时候才能大小写完美快速转换555)其实是DataFrame格式。

接着是pandas读取二进制文件,简而言之言而总之就是下面这两个函数frame.save('filename')&&pd.load('filename')

完了是pandas读取excel数据,先粗略剖析一下excel文件,不难发现excel文件里面可以有很多张工作表sheet,要想要拿到其中的一张表就需要两次相应的操作(第一次拿到所有表,第二次拿到你需要的特定表,清晰明了)具体操作的话就是:xls_file = pd.ExcelFile('data.xls')还有table = xls_file.parse('Sheet1;)

之后是pandas读取json格式的数据,这个比较少见(至少我大一之前没见过,也可能是我目光太短浅了555)先介绍一下json的数据格式好了

贴个有点看不懂的百度百科:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json文件长什么样呢
回答:大概这样,json
(个人经验告诉我json和js有密切的关系,json是js对象的一个字符串,这两者之间可以相互转换,就很有意思 nan)

不讲道理讲学习,在读取json文件之前,可以导入一下非官方的轻量级库json (因为py万能,存在现有的可以直接解析json的库,那我们就和之前一样直接pip install进去就可以了)

然后有了这个库,json的读写就比较简单了json.load()直接load就可

这里放个例子吧,刘老师上课讲的
例子2
然后接着是这节课的课后作业1,是一个我(真正意义上的)从来没接触的xml格式文件(真的头好大,刚开始听文字定义真的半点听不懂系列)

先放个百度百科= =XML(Extensible Markup Language)可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。

okey,没看懂对吧,课后我下老师发的xml格式的数据用vscode打开看发现(它长得还挺可爱……),大概是这样(我觉得主要是我vscode配色的功劳hhhhhh)
代码
我们可以使用lxml库来解析xml格式的文件,大概这样:
lxml库

然后是读取html格式的数据,就是网页的那个html,为了一视同仁,也贴一下百度百科吧。HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。

然后老师给了一个捕捉链接的例子,还给了一个获取表格的例子,

捕捉链接:
捕捉链接

获取表格:
获取表格

然后我感觉今天讲的挺多的(但是老师或其实一点也不多)但我还是肆意地花了一篇博客(作业就放在下一篇博客里吧~~~

发布了106 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44702847/article/details/102922313