CSV数据处理


数据会被存储成不同格式和文件类型。有些格式的数据很容易被机器处理,有些容易被人工处理。

CSV,JSON,XML格式的文件很容易被机器处理;word,excel很容易被人工取读。

CSV文件中的数据是以逗号(,)分隔的。

1.写入CSV文件

第一种,写入文件内容(内容为列表格式 见body)

import csv 

headers = ['class', 'name', 'sex', 'height', 'year']

body = [

  [1,'xiaoming', 'male', 168, 23],

  [1, 'xiaohong', 'female', 162, 22],

  [2, 'xiaozhao', 'female', 163, 21],

  [2,'xiaocao', 'male', 170, 22]

with open('test.csv', 'w','newline='') as f:

  f_csv = csv.writer(f)          #创建一个wrieter对象,并且传入文件对象(文本定位符)

  f_csv.writerow(headers)        #写入一行数据

  f_csv.writerows(body)         #写入多行数据

第二种,写入文件内容(内容为字典格式,见body2)

body2 = [

  {'class': 1, 'name': 'xiaoming', 'sex': 'male', 'height': 168, 'year': 23},

  {'class': 1, 'name': 'xiaohong', 'sex': 'female', 'height': 162, 'year': 22},

       {'class': 2, 'name': 'xiaozhagn', 'sex': 'female', 'height': 163, 'year': 21},

       {'class': 2, 'name': 'xiaoli', 'sex': 'male', 'height': 158, 'year': 23}

]

with open('test.csv', 'w', newline='') as f:

  f_csv = csv.DictWriter(f, headers)        #csv.DictWriter()  第一个入参是文件对象f, 第二个字段是字段名称

  f_csv.writeheader()              #csv.writeheader()  写入字段名称(class,name,sex...)

  f_csv.writerows(body2)

2.读取CSV文件

第一种,读取后数据是列表格式

 with open('test.csv', 'r') as f:

  r_csv = csv.reader(f)             #csv.reader() 返回的是一个数据的列表

  for row in r_csv:

    print(row)                # 打印的是行内容的列表,如body中[1,'xiaoming', 'male', 168, 23]

第二种,读取后数据是字典格式

with open('test.csv', 'r' ) as f:

  r_csv. = csv.DictReader(f)           #获取的每一行数据是一个字典,字典的键是文件的第一行

  for row in r_csv:

    print(row)

3.注意点:

3.1文件的位置若是和代码不在同一目录,则需要指定到文件对应的目录下

  / 当前目录

  ../ 进入上层目录

3.2当写入文件不要有空行时,增加参数newline ,完整语句:with open('filename', 'w', newline='')