欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

使用Python如何处理csv文件?

发布时间:2017-07-08 15:15  回复:0  查看:2997   最后回复:2017-07-08 15:15  

本文和大家分享的主要是使用python语言处理csv文件相关内容,一起来看看吧,希望对大家学习python开发有所帮助。

  CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:

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

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

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

  · 没有多个工作表

  · 不能嵌入图像图表

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

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

  CSV文件中读取数据

  import csv

  filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'withopen(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'withopen(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,18name,age

  Bob,14

  Tom,23

  Jerry,18

  DictReaderDictWriter对象

  使用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是表第一行的某个数据,作为key

  max_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)


来源:博客园


您还未登录,请先登录

热门帖子

最新帖子