python的csv标准库_Python 标准库:csv

我们经常会用 CSV 文件保存联系人信息,或者一些表格数据, 在 Python 中也会有支持 CSV 的标准库。

如果需要从 CSV 文件中读取数据并返回一组字典应该怎么做呢?

比如对下面这个文件 data.csv

"Ordinal","Name","DoB"

1,"Annabel",08/18/2007

2,"Brian",08/19/2007

3,"Charlie",08/20/2007

4,"Derek",08/21/2007

5,"Emily",08/22/2007

6,"Fortune",08/23/2007

7,"Gerald",08/24/2007

8,"Harriet",08/25/2007

9,"India",08/26/2007

可以用下面这个函数来读取数据, 把第一行的列名作为字典的 key ,后面每行的数据做为 value, 和 key 对应地逐条显示出来。

import csv

def read_csv_loop(file_name='data.csv'):

raw_result = []

with open(file_name) as f:

reader = csv.reader(f)

for row in reader:

raw_result.append(row)

keys = raw_result[0]

result = []

for row in raw_result[1:]:

result.append({keys[i] : val for i, val in enumerate(row)})

return result

其中 with 语句是为了防止打开的文件忘记被关掉,不过这个方法有点麻烦,它用了一个 enumerate 函数来遍历读出来的结果。csv 还有更好用的方法 DictReader 可以利用,

import csv

def read_csv(file_name='data.csv'):

with open(file_name) as f:

reader = csv.DictReader(f)

return [row for row in reader]

if __name__ == '__main__':

print read_csv('data.csv')

输出:

[{'Ordinal': '1', 'DoB': '08/18/2007', 'Name': 'Annabel'}, {'Ordinal': '2', 'DoB': '08/19/2007', 'Name': 'Brian'}, {'Ordinal': '3', 'DoB': '08/20/2007', 'Name': 'Charlie'}, {'Ordinal': '4', 'DoB': '08/21/2007', 'Name': 'Derek'}, {'Ordinal': '5', 'DoB': '08/22/2007', 'Name': 'Emily'}, {'Ordinal': '6', 'DoB': '08/23/2007', 'Name': 'Fortune'}, {'Ordinal': '7', 'DoB': '08/24/2007', 'Name': 'Gerald'}, {'Ordinal': '8', 'DoB': '08/25/2007', 'Name': 'Harriet'}, {'Ordinal': '9', 'DoB': '08/26/2007', 'Name': 'India'}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值