当前位置:   article > 正文

Python 标准库 CSV_python csv

python csv

CSV模块

python对于csv的解读:

CSV (Comma Separated Values) 格式是电子表格和数据库中最常见的输入、输出文件格式。在 RFC 4180 规范推出的很多年前,CSV 格式就已经被开始使用了,由于当时并没有合理的标准,不同应用程序读写的数据会存在细微的差别。这种差别让处理多个来源的 CSV 文件变得困难。但尽管分隔符会变化,此类文件的大致格式是相似的,所以编写一个单独的模块以高效处理此类数据,将程序员从读写数据的繁琐细节中解放出来是有可能的。

在没有了解csv之前,一直都是使用openpyxl库来创建excel,然后保存数据。

这里就涉及到一个问题:第三方库,如果其他人并没有安装第三方库怎么办呢?这个问题很多人可能会发笑,让用户装一个不就好了,pip install openpyxl 一条命令解决的事。有没有一种可能性就是用户无法,或者不方便连接外网?亦或者用户根本不清楚安装命令,再或者安装过程如果出现问题呢?解决方法自然还有很多,比如直接打包为exe程序,如果用户还有输入,还要设计GUI界面,这不是大大复杂化了吗?

把用户当成傻子,你以为的入门的知识对很多不涉及这个方向的人而言就是很难理解,例如和windows小白谈powershell和cmd。很喜欢BeyondCompare这款工具,从来没有学习过工具的使用,但是拿来就能用,我觉得被它当成一个傻子挺好的。人生苦短,把更多时间腾出来给自己,哪怕是这时间用来发呆我也觉得是值得的。与人方便,于己方便。

能够使用标准库解决的问题,不要使用第三方模块。xml除外(因为我喜欢lxml,官方也指出xml不安全)。

如果仅仅是为了保存为excel可读,那么直接存csv,使用excel读取完全没有任何问题。

快速上手

import csv


def read_csv():
    with open('../res/demo.csv', newline="") as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            print(row)
            for key, value in row.items():
                print(f"{key}:{value}")


def write_csv():
    with open("../res/demo.csv", mode="w+", newline="") as csvfile:
        # use DictWriter (easydict)
        fieldnames = ["iso", "std_mean"]
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        iso_data = {"iso": 100, "std_mean": 0.332}
        writer.writerow(iso_data)

        try:
            error_iso_data = {"iso": 999, "std_xxxx": 0.999}
            writer.writerow(error_iso_data)
        except ValueError:
            print("ValueError: dict contains fields not in fieldnames: 'std_xxxx'")

        # use writer
        writer = csv.writer(csvfile)
        iso_data = [[200, 0.356], [300, 0.443], [500, 0.558]]
        writer.writerows(iso_data)


if __name__ == '__main__':
    write_csv()
    read_csv()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

在写数据这块,有DictWriter和Writer,try中的代码就是会报错的地方,报错信息也就是print中的信息

基本上这两种写入方式足以满足大部分需求了,writerows和writerow相信很容易明白,一个写入多条数据,一个写入单条数据

附录

python csv 模块的官方文档:https://docs.python.org/zh-cn/3/library/csv.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/199696
推荐阅读
相关标签
  

闽ICP备14008679号