Excel中怎样计算面积? Excel制作计算圆面积工具的教程-英雄云拓展知识分享
107
2023-11-13
【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第3章,第4节,吕云翔、张扬和韩延刚等编著。
3.4 CSV 文件
3.4.1 CSV简 介
CSV, 全称是 “Comma Separated Values” (逗号分隔值)。CSV 文件以纯文本形式存储 表格数据(数字和文本)。它由任意数目的记录组成,记录之间以某种换行符(一般就是制 表符或者逗号)分隔,每条记录中是一些字段。在进行网络抓取时,难免会遇到 CSV 数 据,而且由于CSV 的简单设计,很多时候使用 CSV 来保存数据(数据有可能是原生的网页 数据,也有可能是已经经过爬虫程序处理后的结果)也十分方便。
3.4.2 CSV的读写
Python 的 csv 模块面向的是本地的 CSV 文件,如果需要读取网络资源中的 CSV, 为了 让网络中遇到的数据也能被 csv 模块以本地文件的形式打开,可以先把它下载到本地,然后 定位文件路径,将其作为本地文件打开。如果只需要读取一次而并不想保存这个文件(就像 一个验证码图片那样,可见第5 章的相关内容),可以在读取操作结束后用代码删除文件。 除此之外,也可直接把网络上的 CSV 文件当作一个字符串来读,转换成一个 StringIO 对象 后就能够作为文件来操作了。
【提示】 IO 是 Input/Output 的简写,意为输入/输出, StringlO 就是在内存中读写字符串 的类。StringIO 针对的是字符串(文本),如果还要操作字节,可以使用 BytesIO。
使用 StringIO 的优点在于,这种读写是在内存中完成的(本地文件则是从硬盘读取), 因此用 StringlO 时也不需要先把 CSV 文件保存到本地。例3-1 是一个直接获取网上的 CSV 文件并读取打印的例子。
【例3-1】 获取在线 CSV 文件并读取。
from urllib.request import urlopen
from io import StringIO
import csv
data =urlopen("https://raw.githubusercontent.com/jasonong/List-of-US-States/ master/states.csv").read().decode()
dataFile =StringIO(data)
dictReader =csv.DictReader(dataFile)
print(dictReader.fieldnames)
for row in dictReader:
print(row)
运行结果为:
['State','Abbreviation']
{'Abbreviation':'AL','State':'Alabama'} {'Abbreviation':'AK','State':'Alaska'}
……
{'Abbreviation':'NY','State':'New {'Abbreviation':'NC','State':'North {'Abbreviation':'ND','State':'North {'Abbreviation':'OH','State':'Ohio'}
York'}
Carolina'}
Dakota'}
{'Abbreviation':'OK','State':'Oklahoma'}
{'Abbreviation':'OR','State':'Oregon'}
……
这里需要说明一下 DictReader 。DictReader 将 CSV 文件的每一行作为一个 dict 来返回, 而 reader 则把每一行作为一个列表返回。使用 reader 时,输出就会是这样的:
['State','Abbreviation']
……
['California','CA']
['Colorado','CO']
['Connecticut','CT']
['Delaware','DE']
['District of Columbia','DC']
['Florida','FL']
['Georgia','GA']
* …
大家根据自己的需要选用读取形式即可。
当然,在读取作为网络资源的 CSV 文件时,除了使用 StringIO, 还可以先将其下载到本 地读取后再删除(对于只需要读取一次的情况而言)。另外,有时候 xls 电子表格(使用 Office Excel 编辑)也常作为 CSV 的替代文件格式而出现,处理 xls 文件可以使用 openpyxl 模块,其设计和操作与CSV 类似。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~