python爬取数据保存为csv时生成编号_将爬取到到数据以CSV格式存储

CSV文件存储

CSV,全称为Comma-Separated Values,中文可以叫做逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或者制表符。不过所有记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。它比Excel文件更为简洁,XLS文本是电子表格,它包含了文本、数值、公式和数据等内容,而CSV中不包含这些内容,就是特定字符分隔的纯文本,结构简单清晰。所以,有时候用CSV来保存数据是比较方便的。本节中,我们来讲解Python读取和写入CSV文件的过程。

写入这里首先来看一个最简单的例子:

f31fbe096b63f624f27fcb34fd9586fc1a4ca339.png?token=38e1ba467eeb1dda749be8133933a4a2&s=21D2A3641AA48B6C4E4DF4030300E0C3

首先,打开data.csv文件,然后指定打开的模式为w(即写入),获得文件句柄,随后调用csv库的writer( )方法初始化写入对象,传入该句柄,然后再调用writerow( )方法传入每行的数据即可完成写入。

运行结束之后,会生成一个名为data.csv的文件,此时数据就成功写入了。直接以文本形式打开的话,其内容如下:

8694a4c27d1ed21b9e5446bcd4bfb0c050da3f1b.png?token=3bf1cf2951a7a8419fb3a563685bf9ff&s=21C23364EEA2F77C0C5DA40F0300E0C2

可以看到,写入的文本默认以逗号分隔,调用一次writerow( )方法即可写入一行数据。用Excel打开的结果如下所示:

d439b6003af33a87023bb8b7be8d7d3c5243b51b.png?token=0b816347848ee5882c4ab74d00a4d893&s=7FAE3C6303BF60295CDDC1DA030080B2

如果想要修改列与列之间的分隔符,可以传入delimiter参数,其代码如下:

u=38521729,521851407&fm=173&app=49&f=JPEG?w=640&h=228&s=A8C2B5408BE0A9620CED5C030000B0C1

这里在初始化写入对象时传入delimiter为空格,此时输出结果的每一列就是以空格分隔了,内容如下:

a2cc7cd98d1001e97b4c75e2c0df16e856e797c4.png?token=43d181e9d4f0e9b9b68a2d054d8b7def&s=71D22364EFAEB76C0C5DF8070300E0C0

另外,我们也可以调用writerows( )方法同时写入多行,此时参数就需要为二维列表,例如:

6609c93d70cf3bc7f5c98820a8d1d7a5cf112a02.png?token=b1085677ab62ea89160f7c57df9c1311&s=21D2A3645EA59B700C5DE0070300E0C0

输出效果是相同的,内容如下:

cf1b9d16fdfaaf51e6c321b0f585f9eaf11f7af6.png?token=8244328b237055ab759d0c6a194d9651&s=60D2A364EEA2F77C0C5DF9070300E0C2

但是一般情况下,爬虫爬取的都是结构化的数据,我们一般会用字典来表示。在csv库中也提供了字典的写入方式,示例如下:

cefc1e178a82b90132865216095cc4733812efc6.png?token=57aa5270cd8e018bb9a84fa6b682b46d&s=61D2A3641EE089700EED7D07030070C2

这里先定义3个字段,用fieldnames表示,然后将其传给DictWriter来初始化一个字典写入对象,接着可以调用writeheader( )方法先写入头信息,然后再调用writerow( )方法传入相应的字典即可。最终写入的结果是完全相同的,内容如下:

5ab5c9ea15ce36d3449b55d342225783eb50b188.png?token=2dc0319bf4f4f2f607523ae4bcf03d25&s=70D23364EEA6B76C0C5DF40F0300A0C2

这样就可以完成字典到CSV文件的写入了。

另外,如果想追加写入的话,可以修改文件的打开模式,即将open( )函数的第二个参数改为a,代码如下:

0b7b02087bf40ad1fb15576a2efd7cdbabecce98.png?token=7c380195630923a0469b3e72886177ff&s=60D2A3648FE48972145524030300E0C2

这样在上面的基础上再执行这段代码,文件内容便会变成:

b90e7bec54e736d11889dcede38122c6d7626996.png?token=5c0a23763a92618c64e972c5d54fc3f5&s=60D22364EEA2F77C4E6D7D0F0300E0C0

如果要写入中文内容的话,可能会遇到字符编码的问题,此时需要给open( )参数指定编码格式。比如,这里写入一行包含中文的数据,代码需要改写如下:

94cad1c8a786c9171c7215ffb0ec1dcb39c757dc.png?token=6e6e76bc577510831bc1e1cdebf64305&s=21D2A3640AA1AD641EC5B4070300B0C2

这里需要给open( )函数指定编码,否则可能会发生编码错误。

另外,如果接触过pandas等库的话,可以调用DataFrame对象的to_csv( )方法来将数据写入CSV文件中。

读取

我们同样可以使用csv库来读取CSV文件。例如,将刚才写入的文件内容读取出来。相关代码如下:

3bf33a87e950352a9c730eb2299296f6b3118b4b.png?token=34ab0fa3faa4ba845c0f85bd3c6d11b5&s=79C2A3441AE08F704E4DE5070300E0C3

运行结果如下:

6a600c338744ebf8fcff2e4da028ba2e6159a708.png?token=75b412e83407b26de1d84d25be3c958f&s=6BC21367EEAAFF744E59D40F0300E0C1

这里我们构造的是Reader对象,通过遍历输出了每行的内容,每一行都是一个列表形式。注意,如果CSV文件中包含中文的话,还需要指定文件编码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博达3956交换机配置手册_网络设备维保浅谈之交换机维保

随着信息化的飞速发展,交换机作为信息流通的承载者,是应用最为广泛的网络设备之一,其作用不言而喻。因此,在日产使用中,要注意交换机这种核心的设备的维护与保养,以免引发故障。交换机运维需要注意哪些问题…

java cas原理_Java并发之原子变量及CAS算法-上篇

Java并发之原子变量及CAS算法-上篇编辑​概述本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中是怎么保证变量原子性的呢?。对应Java中的包是:java.util.concurrent.atomic包下。因为涉及到了CAS算法&#x…

node ajax validator,使用validator.js对字符串数据进行验证

validator.js是一个对字符串进行数据验证和过滤的工具库,同时支持Node端和浏览器端,github地址是https://github.com/chriso/validator.js主要API如下:验证APIcontains(str, seed)验证str中是否含有seedequals(str, comparison)验证是否相等i…

css span 右端对齐_CSS标准文档流

web页面的制作,是个“流”,像水流一样,必须从上往下,一点点的编织,不像画画,可以这个地方画一个,另一个地方画一个,随意而为。标准文档流的一些微观现象1. 空白折叠现象1)标签与标签…

composer升级_Composer 使用姿势与 Lumen 升级指南

Composer 使用姿势这里主要说说 composer.json 和 composer.lock 文件的作用。composer.jsoncomposer.json 文件包含了项目的依赖和其它的一些元数据,使用 JSON format 编写。当初次调用 composer install 时,Composer 会根据 composer.json 文件&#x…

服务器间传文件$d,基于OpenSSH+WinSCP完成Windows服务器之间的文件传输

背景经常会遇到在不同服务器之间传输文件,Linux和Linux之间用命令rsync, windows和linux之间普遍是有图形化界面的ftp软件,老黄平时用的比较多的是FileZilla。Windows和Windows之间的话,90%都是在一台机器复制,到另一台…

dbgrideh 为什么只一行_Mysql性能优化:为什么count(*)这么慢?

导读在开发中一定会用到统计一张表的行数,比如一个交易系统,老板会让你每天生成一个报表,这些统计信息少不了sql中的count函数。但是随着记录越来越多,查询的速度会越来越慢,为什么会这样呢?Mysql内部到底是…

jmeter 高并发测试报告_JMeter分布式测试

一、为什么要使用分布式测试按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。有时候为了尽量模拟业务场…

半圆阴影_六年级数学:怎么求阴影部分面积?正方形与半圆,割补法常考题

欢迎您来到方老师数学课堂,请点击上方蓝色字体,添加关注。所有的视频内容,全部免费,请大家放心关注,放心订阅。六年级数学:怎么求阴影部分面积?正方形与半圆,割补法常考题。大家先在…

c语言判断整数_用c++编写闰年的判断基础程序

其实c语言与c语言有太多共同的东西,学习过c语言再学习c语言就显得轻而易举。当然学过了c再去学习c语言也是有一些帮助的(但是个人不提倡先学习c在学c语言)。由于现在经常看见有关闰年的程序,风式各样,眼花缭乱,些许凌乱&#xff0…

cat日志 搜索_大日志,看我如何对付你

在服务器接口测试中,我们经常会和各种日志打交道。一旦测试时服务端出现了问题,而单凭服务端的日志又不能发现问题原因的时候,往往开发要向我们测试人员询问客户端这边的情况,希望看看我们能不能提供一些有用信息,如错…

加载gif动图_GIF生成神器——ScreenToGif

每次需要做一个动图展示时,总是感觉很头疼。截图吧,需要的图片太多;录视频吧,文件太大;做动图吧,太麻烦。今天推荐的这个软件或许能够解决大家这个困惑,今天推荐的是动图生成神器——ScreenToGi…

java 修改最大nio连接数_关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?...

关于同步、阻塞的知识我之前的文章有介绍,所以关于流用到这些概念与之前多线程用的概念一样。下面具体来看看java中的几种流IO/BIOBIO就是指IO,即传统的Blocking IO,即同步并阻塞的IO。这也是jdk1.4之前的唯一选择,依赖于ServerSocket实现&am…

python扫雷 广度优先_广度优先搜索(BFS)解题总结

定义 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。 简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。 如果所有节点均被访问,则算法中止。 BFS同样属于盲目搜索。 一般用队…

python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中

大家好,这是我的第一个问题所以请保持温和.我有一个计算机视觉领域的项目,我是新的,我会很感激一些帮助.我有一个pcb的图像,我的(首先)任务是从背景中切断电路板并将其保存到新文件.如果结果只是没有灰色背景的普通pcb,那就没问题了. 我到目前为止尝试的是,首先使用阈值将图像转…

flash代码_Flash如何对制作文件进行优化

对FLASH进行优化分为两方面,一方面是代码上的优化,主要是通过优化提高FLASH性能,降低CPU占用和内存使用。另一方面是资源的优化,这方面的优化是为了减小编译后的文件大小以及制作文件的大小,因为如果不进行相应的优化&…

deepin系统转为windows_windows系统下安装深度系统deepin

前期准备DiskGenius(用来扩展分区)deepin-20-amd64.iso(深度系统镜像文件)相关文件下载首先下载安装时要用的工具,分别为:DiskGenius , UltraISODiskGenius是一款磁盘工具,创建系统分区。UltraISO是用来打开系统光盘镜像文件工具。Win8/8.1/10无需下载Ul…

软件开发模型_QT开发(二十三)——软件开发流程

一、软件开发流程简介软件开发流程是通过一系列步骤保证软件产品的顺利完成,是软件产品在生命周期内的管理学。软件开发流程的本质是软件开发流程与具体技术无关,是开发团队必须遵守开的规则。二、常见软件开发流程模型常见的软件开发流程模型包括即兴模…

python3.6.2用pyinstaller3.4报错_OceanBase 2.2 版本体验:用 BenchmarkSQL 跑 TPC-C

OB君:好消息!「 OceanBase 2.2 版本 」正式上线官网啦!(点击阅读原文即可直接下载)OceanBase 2.2版本是成功支撑2019年天猫双11大促的稳定版本,同时也是用于TPC-C测试且荣登TPC-C性能榜首的版本。我们将在接…

hive窗口函数_Hive sql窗口函数源码分析

在了解了窗口函数实现原理 spark、hive中窗口函数实现原理复盘 和 sparksql比hivesql优化的点(窗口函数)之后,今天又撸了一遍hive sql 中窗口函数的源码实现,写个笔记记录一下。简单来说,窗口查询有两个步骤:将记录分割成多个分区…