csv文件介绍
csv文件是用逗号作为分隔符的文件。
用Excel打开如下
用记事本打开如下
csv文件的读取
这里要导入csv模块,import csv。我们的csv文件内容如下:
name,gender,home,label
aaa,M,Shanghai,0
bbb,W,Beijing,1
ccc,W,Guangzhou,0
ddd,M,Shenzhen,1
# 普通的读取方法
import csv
from collections import Iterable
path = "test.csv"
with open(path, 'r') as csv_file:
reader = csv.reader(csv_file)
print("csv.reader读取后的对象是迭代器?", isinstance(reader, Iterable)) # 判断是否为迭代器
# 循环输出csv文件内容
for row in reader:
print(row)
'''
# 输出结果如下:
csv.reader读取后的对象是迭代器? True
['name', 'gender', 'home', 'label']
['aaa', 'M', 'Shanghai', '0']
['bbb', 'W', 'Beijing', '1']
['ccc', 'W', 'Guangzhou', '0']
['ddd', 'M', 'Shenzhen', '1']
'''
有的时候,需要提取csv文件的行首,或者提取文件中的特征和标签数据,可以使用下面的代码
import csv
features = []
label = []
path = "test.csv"
with open(path, 'r') as csv_file:
reader = csv.reader(csv_file)
header = next(reader) # 提取csv文件首行
# 循环访问csv文件的每一行(首行除外,之前已经访问)
for row in reader:
label.append(row[-1]) # 将标签存入label列表
features.append(row[:-1]) # 将特征数据存入features列表
print("header: ", header)
print("features:")
print(features)
print("label:", label)
'''
# 输出如下:
header: ['name', 'gender', 'home', 'label']
features:
[['aaa', 'M', 'Shanghai'], ['bbb', 'W', 'Beijing'], ['ccc', 'W', 'Guangzhou'], ['ddd', 'M', 'Shenzhen']]
label: ['0', '1', '0', '1']
'''
可以看到,上面的代码,可以将csv文件中的内容读入为我们想要的格式,方便后面的使用。
csv文件的写入
import csv
data = [
["id", "name", "label"],
[0, "aaa", 0],
[1, "bbb", 0],
[2, "ccc", 1]
]
path = "test2.csv"
# 这里要注意,如果open函数不加入newline参数的时候,会写入空行
# 避免写入空行,可以(newline='')或者(newline='\n')
with open(path, 'w', newline='\n') as csv_file:
writer = csv.writer(csv_file)
for row in data:
writer.writerow(row)
with open(path, 'r') as file:
rows = []
for row in csv.reader(file):
rows.append(row)
print(rows)
'''
# 输出如下:
[['id', 'name', 'label'], ['0', 'aaa', '0'], ['1', 'bbb', '0'], ['2', 'ccc', '1']]
'''