前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSV文件操作起来还挺方便的【python爬虫入门进阶】(10)

CSV文件操作起来还挺方便的【python爬虫入门进阶】(10)

作者头像
码农飞哥
发布2021-12-15 14:00:08
1K0
发布2021-12-15 14:00:08
举报
文章被收录于专栏:好好学习

为啥写这篇文章?

前面几篇文章我们介绍了正则表达式的使用,主要还是介绍数据解析方面的知识点。这篇文章开始我们就将介绍数据存储方面的知识点了。 前面几篇文章还没看的小伙伴,可以抓紧看看啦!!!! 用正则表达式爬取古诗文网站,边玩边学【python爬虫入门进阶】(09) 本文主要介绍csv文件的读写操作,文件简单易懂。

CSV文件是什么?

CSV即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互的格式。 具体文件格式:

1.每条记录占一行 以逗号为分隔符 2.逗号前后的空格会被忽略 3.字段中包含有逗号,该字段必须用双引号括起来 4.字段中包含有换行符,该字段必须用双引号括起来 5.字段前后包含有空格,该字段必须用双引号括起来 6.字段中的双引号用两个双引号表示 7.字段中如果有双引号,该字段必须用双引号括起来 8.第一条记录,可以是字段名

如何读取CSV文件

通过reader方法读取

首先,以content_test.csv文件为例进行说明。

  1. 读取csv中的所有列
代码语言:javascript
复制
  with open('content_test.csv', 'r') as fp:
        reader = csv.reader(fp)
        # 过滤掉标题行
        next(reader)
        for x in reader:
            title = x[1]
            print(x)
            print(title)

这里通过csv.reader(fp) 创建csv_reader对象,通过调用next(reader) 方法可以过滤掉标题行。 遍历reader可以获取到每一行的数据,指定 x[1] 可以获取到每行第二个单元格的数据。 最终的运行结果是:

通过DictReader方法读取

用DictReader方法创建redader对象, 不会包含标题那行的数据。 reader是一个迭代器。遍历这个迭代器,返回的是一个字典。

代码语言:javascript
复制
 with open('content_test.csv', 'r') as fp:
        reader = csv.DictReader(fp)
        for x in reader:
            value = {'序号': x['序号'], '标题': x['标题']}
            print(value)

运行结果是:

如何向CSV文件中写入数据

与读取csv的方法类似的,向CSV文件中写数据的方法就是通过writer对象来操作。

通过writer方法

代码语言:javascript
复制
    headers = ['用户名', '年龄', '身高']
    values = [
        ('张三', 18, 179),
        ('李四', 20, 180),
        ('王五', 25, 177),
        ('码农飞哥', 18, 171)
    ]

    with open('user_info.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.writer(fp)
        writer.writerow(headers)
        writer.writerows(values)

通过headers来指定CSV的表头。通过values指定单元格的数据。 通过写open('user_info.csv', 'w', encoding='utf-8', newline='')文件的mode是w。通过encoding='utf-8'指定编码格式为utf-8,如果不指定的话可能会出现中文乱码的情况。指定newline='' 指定行与行之间的空格,如果不指定的话则每行之间有空格。 通过csv.writer(fp) 创建一个writer对象。 通过writerow方法写入表头 通过writerows方法写入每行数据。 运行结果是:

通过DictWriter方法

代码语言:javascript
复制
    headers = ['用户名', '年龄', '身高']
    values = [
        {'用户名': '张三', '年龄': 18, '身高': 179},
        {'用户名': '李四', '年龄': 20, '身高': 180},
        {'用户名': '王五', '年龄': 25, '身高': 177},
        {'用户名': '码农飞哥', '年龄': 18, '身高': 171}
    ]
    with open('user_info2.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.DictWriter(fp, headers)
        # 写入表头数据的时候需要调用writeheader
        writer.writeheader()
        writer.writerows(values)

DictWriter的方法在写入时是以字典的形式写入数据。 通过csv.DictWriter(fp, headers)创建writer对象。 通过 writeheader()方法写入表头 通过writerows(values) 方法写入表单元格的数据。

总结

CSV文件操作起来还挺方便的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农飞哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为啥写这篇文章?
  • CSV文件是什么?
  • 如何读取CSV文件
    • 通过reader方法读取
      • 通过DictReader方法读取
      • 如何向CSV文件中写入数据
        • 通过writer方法
          • 通过DictWriter方法
          • 总结
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档