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模块,准备好数据集,然后按照打开文件,读取文件,写入文件,关闭文件的思路处理,当然也要记住必要的函数方法。希望本文能对你有所帮助。