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()

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

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

附录

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

你可能感兴趣的:(Python,标准库,第三方库,python,数据挖掘,开发语言)