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='')