python中文件的读写【三】(csv文件)

10 篇文章 0 订阅
8 篇文章 1 订阅

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']]
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值