Python文件处理II——CSV文件处理

CSV是Python文件处理中一个经常用到的文件类型,本文会按照打开文件,读取文件,写入文件,关闭文件的思路对CSV文件的处理进行介绍。

一,介绍CSV文件

CSV文件:使用纯文本来存储表格数据,并以指定的分隔符进行分隔,CSV的第一行一般为列名;

常见的情景:天池,Kaggle平台,其所提供的开源数据多为CSV文件。

二,如何处理CSV文件

1,准备工作
  • 数据集
  • 下载csv模块

导入模块

import csv

2,打开文件

与其他文件的处理类似,使用open函数

3,读取文件

使用csv模块的reader函数

  • 主要参数介绍
参数说明
delimiter字段分隔符,默认为逗号
lineterminator换行符,默认:“\r\n”
quotechar用于包含有特殊字符字段,默认为双引号
quoting写文件控制引号行为
  • quoting参数
参数说明
csv.QUOTE_NONNUMERIC数字加引号
csv.QUOTE_ALL所有字典加引号
csv.QUOTE_MINIMAL特殊字典加引号
csv.QUOTE_NONE都不加引号

在CSV的读取中,一般有两种方式:

  • 逐行读取,只有数据:

csv_reader = csv.reader(iterable [, dialect='excel'],…)

fpath = r"E:\vscode_dir\python_file\a.csv"
import csv
#打开文件
f = open(fpath, encoding="UTF-8-sig")
#创建csvreader对象
csv_reader = csv.reader(f)
#逐行读取
for line in csv_reader:
    print(line)
#关闭文件
f.close()

输出结果是包含行内容的列表

  • 逐行读取,读取内容:

列名+内容,csv_reader = csv. DictReader (iterable [, dialect='excel'],…)

fpath = r"E:\vscode_dir\python_file\a.csv"
import csv
f = open(fpath, encoding="UTF-8-sig")
#创建DictReader对象
csv_reader = csv.DictReader(f)
for line in csv_reader:
    print(line)
#关闭文件
f.close()

输出的类型是OrderedDict

4,写入文件
  • 主要方法和流程
#创建writer对象
csvw = csv. writer(iterable [, dialect='excel'],…)
#写入一行
csv.writerow(row) 
#写入多行
csv.writerows(rows)

示例:

import csv
#即将写入的文件的地址
fpath = r"D:\Jupyter\Homework of course\csv_write_test.csv"
#打开文件
f = open(fpath, "w")
#创建writer对象
csv_write = csv.writer(f)
cols = ["姓名", "年龄", "身高"]
line = ["小明", 20, 175]
lines = [["小红", 21, 165],["小亮", 21, 178]]
#写入字段
csv_write.writerow(cols)
#写入第一行数据
csv_write.writerow(line)
#写入多行数据
csv_write.writerows(lines)
#关闭文件
f.close()

演示结果:

  • DictWriter方式写入

主要流程:

#创建DictWriter对象,fieldnames:字段名称 
csvw = csv.DictWriter(f, fieldnames, restval='',...)
#写入字段
csvw.writeheader()
#写入一行数据,数据格式为字典
csvw.writerow(rowdict)
#写入多行数据
csvw.writerow(rowdicts)

示例:

import csv
#即将写入的文件地址
fpath = r"D:\Jupyter\Homework of course\csv_write_test.csv"
#打开文件
f = open(fpath, "w",newline="")
cols = ["姓名", "年龄", "身高"]
#创建writer对象
csv_write = csv.DictWriter(f, fieldnames=cols)
#写入列名
csv_write.writeheader()
#写入数据,将数据整理成字典形式;
line = ["小明", 20, 175]
lines = [["小红", 21, 165],["小亮", 21, 178]]
#写入第一行数据
item = dict(zip(cols, line))
csv_write.writerow(item)
#写入多行数据
items = [dict(zip(cols, item)) for item in lines]
csv_write.writerows(items)
#关闭文件
f.close()

  • 常见问题:写入两次换行

解决方式:

方式1.打开文件,open设置newline为空字符串:f = open(fpath, "w",newline="")

方式2.创建write对象,指定lineterminator为"\r":csv_write = csv.writer(f, lineterminator="\r")

5,关闭文件

同样使用close函数

三,总结

Python中处理CSV文件的思路与其他文件大体相同,我们需要提前下载好csv模块,准备好数据集,然后按照打开文件,读取文件,写入文件,关闭文件的思路处理,当然也要记住必要的函数方法。希望本文能对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值