Python处理csv文件
https://www.cnblogs.com/yanglang/p/7126660.html
Python处理csv文件
CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
在CSV文件中,以,
作为分隔符,分隔两个单元格。像这样a,,c
表示单元格a
和单元格c
之间有个空白的单元格。依此类推。
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。
从CSV文件中读取数据
import csvfilename = '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 csvfilename = '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)
截取一部分输出
1 ['AKST', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']
2 ['2014-1-1', '46', '42', '37', '40', '38', '36', '97', '86', '76', '29.95', '29.77', '29.57', '10', '8', '2', '25', '14', '36', '0.69', '8', 'Rain', '138']
...
前面的数字是行号,从1开始,可以用reader.line_num
获取。
要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next
方法一次获取一行。
import csvfilename = '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对应的数据。
import csvfilename = '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 csvheaders = ['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文件相关推荐
- python写入csv文件的几种方法
python写入csv文件的几种方法 最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6] #字典中的key值 ...
- python写入csv文件中文乱码解决方案
python写入csv文件中文乱码解决方案 参考文章: (1)python写入csv文件中文乱码解决方案 (2)https://www.cnblogs.com/vsivn/p/6115537.html ...
- python导入csv文件-Python从CSV文件导入数据和生成简单图表
原标题:Python从CSV文件导入数据和生成简单图表 我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数 ...
- python创建csv文件并写入-Python 读写 CSV
Python 读写 CSV 文件最简单的方法是使用自带的 csv 库,复杂点的可以使用 pandas.今天老唐简单记录一下使用自带的 csv 库怎么进行 Python 的文件读写操作,主要包括新建文件 ...
- python导入csv文件-Python读写文件(csv、txt、excel)
大家做在数据处理的时候,肯定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢? 1.python读写csv文件 import csv #python2可以用file替代open with op ...
- python读取csv文件的方法-python读写csv文件的方法
1.爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def b ...
- python关闭csv文件_使用Python编辑csv文件时跳过标题
使用Python编辑csv文件时跳过标题 我使用下面引用的代码使用Python编辑csv.代码中调用的函数形式代码的上半部分. 问题:我希望下面引用的代码从第2行开始编辑csv,我希望它排除包含标题的 ...
- python导入csv数据例子-使用python读取csv文件快速插入数据库的实例
如下所示: # -*- coding:utf-8 -*- # auth:ckf # date:20170703 import pandas as pd import cStringIO import ...
- Python 读取 csv 文件忽略引号中字段的逗号
如题,使用 Python 处理 csv 文件,之前是这么处理的: str = '飞机,火车,汽车' rel = str.split(',') > ['飞机','火车','汽车'] 一般情况下是正 ...
- python csv读取数据 去掉标题-Python读csv文件去掉一列后再写入新的文件实例
用了两种方式解决该问题,都是网上现有的解决方案. 场景说明: 有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id.目标是得到新文件只有mobile_id,pl ...
最新文章
- MySQL中authorization_IdentitiServser4 + Mysql实现Authorization Server
- (三)Lucene——Field域和索引的增删改
- iOS 11开发教程(九)iOS11数据线连接真机测试
- mysql连接优先级设置_MySQL的按优先级等效连接
- Python学习之共享引用
- 阿里云神龙团队拿下TPCx-BB排名第一的背后技术
- JavaSE10:日期时间类、java比较器、System类、Math类、大数类
- 企业class类命名规范
- 【转】64位ORACLE客户端上plsql无法识别ORACLE_HOME解决方案
- 强化学习总结(1)--EE问题
- HLS tag “CHARACTERISTICS”DASH的AudioPurposeCS:
- 【历史上的今天】8 月 1 日:中国的第一台计算机成功运行;Microsoft Office 首次推出;今日头条上线
- Java聊天室——实现多人聊天、私聊、群聊
- matlab 颗粒碰撞,Lsdyna颗粒碰撞图 - 仿真模拟 - 小木虫 - 学术 科研 互动社区
- 1.HTTP网络编程
- 聚亿美匠心时代,聚亿美用心打造未来
- Vue 3D轮播插件vue-carousel-3d
- 程序员睡眠与养生诀窍
- es6.3.1 搜索中must和should混合的用法
- 【labelme】标注工具报错ValueError: min() arg is an empty sequence
热门文章
- 将链表中m-n范围内的数进行倒序
- Fast Image Cache – iOS 应用程序高性能图片缓存
- Anton Chuvakin:关于日志管理产品的十个注意事项
- 高版本(3.9版本)python在anaconda安装opencv库及skimage库(scikit_image库)诸多问题解决办法
- 如何使用Swift Playgrounds制作东西
- 量子相干与量子纠缠_量子分类
- Java调用存储过程出现Bug,sql语法错误
- 标准库类型String
- [HNOI2016]网络 树链剖分,堆
- Spring Cloud 7:Gateway