Python处理csv文件实例详解

零下一度
发布: 2018-05-17 16:24:58
原创
10438人浏览过

Python处理csv文件

csv(comma-separated values)即逗号分隔值,可以用excel打开查看。由于是纯文本,任何编辑器也都可打开。与excel文件不同,csv文件中:

  • 值没有类型,所有值都是字符串

  • 不能指定字体颜色等样式

  • 不能指定单元格的宽高,不能合并单元格

  • 没有多个工作表

    立即学习Python免费学习笔记(深入)”;

  • 不能嵌入图像图表

在CSV文件中,以,作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。

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

从CSV文件中读取数据

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中,有点像这样

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]
登录后复制

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

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方法一次获取一行。

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可以写入。一次写入一行,一次写入多行都可以。

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='',则每写入一行将有一空行被写入。上面的代码生成如下内容。

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18
登录后复制

DictReader和DictWriter对象

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

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类,可以写入字典形式的数据,同样键也是标头(表格第一行)。

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文件实例详解的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号