Python处理csv文件实例详解


当前第2页 返回上一页

不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。

从CSV文件中读取数据

1

2

3

4

import csv

 

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:

    reader = csv.reader(f)print(list(reader))

data不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样

1

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]

于是我们可以这样访问到Bob的年龄reader[1][1], 在for循环中遍历如下

1

2

3

4

import csv

 

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:

    reader = csv.reader(f)for row in reader:# 行号从1开始print(reader.line_num, row)

要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next方法一次获取一行。

1

2

3

4

import csv

 

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:

    reader = csv.reader(f)# 读取一行,下面的reader中已经没有该行了head_row = next(reader)for row in reader:# 行号从2开始print(reader.line_num, row)

写数据到csv文件中

有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

1

2

3

4

5

6

import csv# 使用数字和字符串的数字都可以datas = [['name', 'age'],

         ['Bob', 14],

         ['Tom', 23],

        ['Jerry', '18']]with open('example.csv', 'w', newline='') as f:

    writer = csv.writer(f)for row in datas:

        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)

如果不指定newline='',则每写入一行将有一空行被写入。上面的代码生成如下内容。

1

2

3

4

5

6

7

8

name,age

Bob,14

Tom,23

Jerry,18

name,age

Bob,14

Tom,23

Jerry,18

DictReader和DictWriter对象

使用DictReader可以像操作字典那样操作数据,把表的第一行(一般是标头)作为key。使用key可访问行中那个key对应的数据。

1

2

3

4

import csv

 

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:

    reader = csv.DictReader(f)for row in reader:# Max TemperatureF是表第一行的某个数据,作为keymax_temp = row['Max TemperatureF']print(max_temp)

使用DictWriter类,可以写入字典形式的数据,同样键也是标头(表格第一行)。

1

2

3

4

5

6

7

8

9

10

import csv

 

headers = ['name', 'age']

 

datas = [{'name':'Bob', 'age':23},

        {'name':'Jerry', 'age':44},

        {'name':'Tom', 'age':15}

        ]with open('example.csv', 'w', newline='') as f:# 标头在这里传入,作为第一行数据writer = csv.DictWriter(f, headers)

    writer.writeheader()for row in datas:

        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)

以上就是Python处理csv文件实例详解的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

linux下如何安装Python

Python复数的虚部怎么表达

总结 Python十大常用文件操作

什么是Python number(数字)?Python数字类型有哪些?

Python不支持的数据类型有哪些

Python实现决策树算法

Python的web服务器相关知识点

Python实现从序列中移除重复项且保持元素间顺序不变

Python简介及入门指导

如何用Python正则表达式匹配字符串?

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...