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文件相关推荐

  1. python写入csv文件的几种方法

    python写入csv文件的几种方法 最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6] #字典中的key值 ...

  2. python写入csv文件中文乱码解决方案

    python写入csv文件中文乱码解决方案 参考文章: (1)python写入csv文件中文乱码解决方案 (2)https://www.cnblogs.com/vsivn/p/6115537.html ...

  3. python导入csv文件-Python从CSV文件导入数据和生成简单图表

    原标题:Python从CSV文件导入数据和生成简单图表 我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数 ...

  4. python创建csv文件并写入-Python 读写 CSV

    Python 读写 CSV 文件最简单的方法是使用自带的 csv 库,复杂点的可以使用 pandas.今天老唐简单记录一下使用自带的 csv 库怎么进行 Python 的文件读写操作,主要包括新建文件 ...

  5. python导入csv文件-Python读写文件(csv、txt、excel)

    大家做在数据处理的时候,肯定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢? 1.python读写csv文件 import csv #python2可以用file替代open with op ...

  6. python读取csv文件的方法-python读写csv文件的方法

    1.爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def b ...

  7. python关闭csv文件_使用Python编辑csv文件时跳过标题

    使用Python编辑csv文件时跳过标题 我使用下面引用的代码使用Python编辑csv.代码中调用的函数形式代码的上半部分. 问题:我希望下面引用的代码从第2行开始编辑csv,我希望它排除包含标题的 ...

  8. python导入csv数据例子-使用python读取csv文件快速插入数据库的实例

    如下所示: # -*- coding:utf-8 -*- # auth:ckf # date:20170703 import pandas as pd import cStringIO import ...

  9. Python 读取 csv 文件忽略引号中字段的逗号

    如题,使用 Python 处理 csv 文件,之前是这么处理的: str = '飞机,火车,汽车' rel = str.split(',') > ['飞机','火车','汽车'] 一般情况下是正 ...

  10. python csv读取数据 去掉标题-Python读csv文件去掉一列后再写入新的文件实例

    用了两种方式解决该问题,都是网上现有的解决方案. 场景说明: 有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id.目标是得到新文件只有mobile_id,pl ...

最新文章

  1. MySQL中authorization_IdentitiServser4 + Mysql实现Authorization Server
  2. (三)Lucene——Field域和索引的增删改
  3. iOS 11开发教程(九)iOS11数据线连接真机测试
  4. mysql连接优先级设置_MySQL的按优先级等效连接
  5. Python学习之共享引用
  6. 阿里云神龙团队拿下TPCx-BB排名第一的背后技术
  7. JavaSE10:日期时间类、java比较器、System类、Math类、大数类
  8. 企业class类命名规范
  9. 【转】64位ORACLE客户端上plsql无法识别ORACLE_HOME解决方案
  10. 强化学习总结(1)--EE问题
  11. HLS tag “CHARACTERISTICS”DASH的AudioPurposeCS:
  12. 【历史上的今天】8 月 1 日:中国的第一台计算机成功运行;Microsoft Office 首次推出;今日头条上线
  13. Java聊天室——实现多人聊天、私聊、群聊
  14. matlab 颗粒碰撞,Lsdyna颗粒碰撞图 - 仿真模拟 - 小木虫 - 学术 科研 互动社区
  15. 1.HTTP网络编程
  16. 聚亿美匠心时代,聚亿美用心打造未来
  17. Vue 3D轮播插件vue-carousel-3d
  18. 程序员睡眠与养生诀窍
  19. es6.3.1 搜索中must和should混合的用法
  20. 【labelme】标注工具报错ValueError: min() arg is an empty sequence

热门文章

  1. 将链表中m-n范围内的数进行倒序
  2. Fast Image Cache – iOS 应用程序高性能图片缓存
  3. Anton Chuvakin:关于日志管理产品的十个注意事项
  4. 高版本(3.9版本)python在anaconda安装opencv库及skimage库(scikit_image库)诸多问题解决办法
  5. 如何使用Swift Playgrounds制作东西
  6. 量子相干与量子纠缠_量子分类
  7. Java调用存储过程出现Bug,sql语法错误
  8. 标准库类型String
  9. [HNOI2016]网络 树链剖分,堆
  10. Spring Cloud 7:Gateway