• 使用Python操作CSV文件,方便又快捷


    概念

    CSV是逗号分隔值或者字符分割值,其文件以纯文本形式存储表格数据

    CSV文件可以用文本文件或者转换成EXCEL(直接用EXCEL也可以,但是可能会有一些问题)打开。因此更适合通过CSV文件进行程序之间转移表格数据。

    应用场景

    需要进行取数分析(将数据库数据拉取下来给产品)、保存爬虫数据时,借助CSV文件更便利一些,同时也可以用该文件记录脚本的操作日志。

    具体操作

    下面演示如何通过Python进行CSV文件的读写操作。

    1. import csv
    2. with open('test.csv', 'w') as f:
    3. writer = csv.writer(f)
    4. writer.writerow(['id', 'name', 'phone'])
    5. writer.writerow(['01', 'zhangsan', '13600000001'])
    6. writer.writerow(['02', 'lisi', '13600000002'])
    7. writer.writerow(['03', 'wangwu', '13600000003'])

    用记事本打开可以看到如下内容,默认每行数据之间是通过逗号隔开的(可以再理解一下这个Comma-Separated Values)。

    图片

    用EXCEL打开的话,数据长这样:

    图片

    让我们把每行下面的空格去掉,加上newline参数:

    1. import csv
    2. with open('test.csv', 'w', newline='') as f:
    3. writer = csv.writer(f)
    4. writer.writerow(['id', 'name', 'phone'])
    5. writer.writerow(['01', 'zhangsan', '13600000001'])
    6. writer.writerow(['02', 'lisi', '13600000002'])
    7. writer.writerow(['03', 'wangwu', '13600000003'])

    看,空格没有了!

    图片

    如果想用其它符号代替数据间的逗号,设置delimiter参数:

    1. import csv
    2. with open('test.csv', 'w') as f:
    3. writer = csv.writer(f, delimiter = '-')
    4. writer.writerow(['id', 'name', 'phone'])
    5. writer.writerow(['01', 'zhangsan', '13600000001'])
    6. writer.writerow(['02', 'lisi', '13600000002'])
    7. writer.writerow(['03', 'wangwu', '13600000003'])

    图片

    还有一种实现方式,先写入表头,再用writerows插入数据:

    1. import csv
    2. with open('test.csv', 'w') as f:
    3. writer = csv.writer(f)
    4. writer.writerow(['id', 'name', 'phone'])
    5. writer.writerows([['01', 'zhangsan', '13600000004'],['02', 'lisi', '13600000005'],['03', 'wangwu', '13600000006']])

    图片

    或者将表头抽离出来,通过字典的方式写入:

    1. with open('test.csv', 'w') as f:
    2. header = ['id', 'name', 'phone']
    3. writer = csv.DictWriter(f, fieldnames=header)
    4. writer.writeheader()
    5. writer.writerow({'id': '01', 'name': 'zhangsan', 'phone': '13600000007'})
    6. writer.writerow({'id': '02', 'name': 'lisi', 'phone': '13600000008'})
    7. writer.writerow({'id': '03', 'name': 'wangwu', 'phone': '13600000009'})

    在这里插入图片描述

    还可以用for循环将数据依次写入:

    1. import csv
    2. data = [
    3. ("zhangsan",'13600000001'),
    4. ("lisi",'13600000002'),
    5. ("wangwu",'13600000003')
    6. ]
    7. with open('test.csv','w') as f:
    8. writer = csv.writer(f)
    9. for i in data:
    10. writer.writerow(i)

    如果需要写入中文数据,为了避免编码错误,文件操作时加上编码格式:

    1. import csv
    2. with open('test.csv', 'w', encoding='utf-8') as f:
    3. writer = csv.writer(f)
    4. writer.writerow(['id', 'name', 'phone'])
    5. writer.writerow(['01', '张三', '13600000001'])
    6. writer.writerow(['02', '李四', '13600000002'])
    7. writer.writerow(['03', '王五', '13600000003'])

    文件读取操作:

    1. import csv
    2. with open('test.csv','r',encoding = 'utf-8') as f:
    3. reader = csv.reader(f)
    4. for row in reader:
    5. print(row)

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

  • 相关阅读:
    Apache Linkis 与 OceanBase 集成:实现数据分析速度提升
    下载并安装DevEco Studio 3.1,初尝鸿蒙编程
    Go 复合数据类型之结构体与自定义类型
    长安大学计算机考研资料汇总
    忍不住推荐一款作图工具draw.io
    动态内存管理改造简易通讯录
    一本通1084;幂的末尾
    【广度优先搜索】leetcode 107. 二叉树的层序遍历 II
    1.非类型模板参数 2.模板的特化 3.继承讲解
    读书笔记:《浪潮之巅:上》
  • 原文地址:https://blog.csdn.net/qq_48811377/article/details/132807991