【python】如何对字典列表进行csv读写操作

在介绍如何进行csv读写的操作之前,务必先来了解一下csv是什么文件,以下是wikipedia关于csv的定义与应用:

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。

例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。

写入数据:

博主在此以一个简单的字典格式的数据写入csv作为示例,个人认为如果字典格式的数据写入学会了,面对其他格式的写入时也就不会难了:

import csv

data = [{'id':2,'name':'李明','score':95},
        {'id':1,'name':'张亮','score':78},
        {'id':3,'name':'王刚','score':99}]

with open('test.csv','w',encoding='utf-8',newline='')as f:
    w = csv.DictWriter(f,data[0].keys())
    w.writeheader()
    w.writerows(data)
f.close()

结果截图:

读取数据:

假设我们要从刚刚创建的csv文件中读取数据,并将其保存为对应的字典格式,具体代码参考如下:

import csv
from collections import namedtuple

with open('test.csv',encoding='utf-8')as f:
    data = []
    reader = csv.reader(f)

    headings = next(reader)
    #headings = ['id','name','score']

    Row = namedtuple('Row',headings)

    for r in reader:
        row = Row(*r)
        item = {}
        item['id']=row.id
        item['name']=row.name
        item['score']=row.score
        data.append(item)
f.close()
print(data)

其中要注意namedtuple的用法,相当于创建了一个类似于元组的数据类型,能用索引来访问数据,可以迭代,也可以通过属性名来访问数据。后面使用row = Row(*r)的语句作用与row = Row(id=r[0],name=r[1],score=r[2])等价,这里使用*r直接将对应的值传递过去了。

结果截图:

发布了22 篇原创文章 · 获赞 3 · 访问量 1891

猜你喜欢

转载自blog.csdn.net/weixin_44322399/article/details/103526202