CSV文件读写
CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
在CSV文件中,以,
作为分隔符,分隔两个单元格。像这样a,,c
表示单元格a
和单元格c
之间有个空白的单元格。依此类推。
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。
从CSV文件中读取数据
1 | import csv |
data
不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样
1 | [['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...] |
于是我们可以这样访问到Bob的年龄reader[1][1]
, 在for循环中遍历如下
1 | import csv |
截取一部分输出
1 | 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'] |
前面的数字是行号,从1开始,可以用reader.line_num
获取。
要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next
方法一次获取一行。
1 | import csv |
写数据到csv文件中
利用csv库写数据到csv文件中
有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。
1 | import csv |
如果不指定newline=''
,则每写入一行将有一空行被写入。上面的代码生成如下内容。
1 | name,age |
利用pandas库写数据到csv文件中
1 | import pandas as pd |
excel文件读写
安装xlrd模块
到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。
使用介绍
导入模块
1 | import xlrd |
打开Excel文件读取数据
1 | data = xlrd.open_workbook('excelFile.xls') |
获取所有工作表的名称:
1 | sheet_names = data.sheet_names() |
获取一个工作表
1 | table = data.sheets()[0] #通过索引顺序获取 |
获取整行和整列的值(数组)
1 | table.row_values(i) # 一定注意这个里面的i值是跟excel表格上面的A到Z对应的! |
获取行数和列数
1 | nrows = table.nrows |
循环行列表数据
1 | for i in range(nrows ): |
读取单元格的值
1 | cell_A1 = table.cell(0,0).value |
使用行列索引
1 | cell_A1 = table.row(0)[0].value |
写入一个数据到某行某列
1 | row = 0 |
写list到一行或者一列:
1 | f = xlwt.Workbook(encoding = 'utf-8', style_compression=0) |
Demo代码
Demo代码其实很简单,就是读取Excel数据。
demo1:
1 | # -*- coding: utf-8 -*- |
demo2:
1 | excel_data = xlrd.open_workbook('100.xlsx') |