| 1 CSV简介
| 1.1 什么是CSV?
CSV(Comma Separated Values)是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。CSV 文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。使用逗号作为字段分隔符是此文件格式名称的来源。对于在 python 中工作的 CSV 文件,有一个名为csv的内置模块。(当然,你同样可以使用pandas中的csv操作方法,您可以参考《数据科学---使用Pandas进行操作数据》)要使用csv模块,和其他模块一样,需要先进行导入
import csv
假设我们有这样一个csv文件(该csv文件的显示借助了VS Code里面的插件):
transaction_id,product_id,price
1000,1,5
1001,2,10
1002,3,15
| 2 读取CSV文件
| 2.1 使用csv.reader()
首先,在 'r' 模式下使用 open() 方法打开 CSV 文件(指定打开文件时的读取模式)如果你对文件的操作还不熟悉,可以参考《python基础----文件操作》,返回文件对象,然后使用 reader() 读取CSV 模块的方法,它返回遍历指定 CSV 文档中的行的读取器对象。
Tips : 推荐使用上下文管理器with,因为它简化了异常处理并自动关闭文件。
import csv
with open("data.csv") as file:
reader = csv.reader(file)
print(reader)
# <_csv.reader object at 0x0000028874CD8880>
当然,你也可以对reader对象进行遍历:
with open("data.csv") as file:
reader = csv.reader(file)
for lines in reader:
print(lines)
Result:
在上面的程序中, reader() 方法用于读取将数据映射到列表中的 data.csv 文件。
| 2.2 使用csv.DictReader()
它类似于前面的方法,首先使用 open() 方法打开 CSV 文件,然后使用 csv 模块的 DictReader 类读取它,它的工作方式类似于普通阅读器,但映射信息为CSV 文件中的字典。该文件的第一行由字典键组成。
with open("data.csv") as file:
reader = csv.DictReader(file)
for lines in reader:
print(lines)
Result:
| 3 写入CSV文件
| 3.1 使用csv.writer()
csv.writer类用于将数据插入CSV文件。此类返回一个编写器对象,该对象负责将用户的数据转换为分隔字符串。
csv.writer提供了两种方法,分别是writerow()和writerows().
Example:
rows = [[1000, 1, 5],
[1001, 2, 10],
[1002, 3, 15]]
with open("../data.csv", "w") as file:
writer = csv.writer(file)
writer.writerow(["transaction_id", "product_id", "price"])
writer.writerow([1000, 1, 5])
writer.writerow([1001, 2, 10])
writer.writerow([1002, 3, 15])
writer.writerows(rows)
| 3.2 使用csv.DictWriter()
此类返回一个将字典映射到输出行的写入器对象。
csv.DictWriter提供了两种方法,分别是writeheader()和writerows().
writeheader() : 只使用预先指定的字段名写入csv文件的第一行。
writerows() : 写入所有行,但是在每一行中只写入值,不写入键。
Example:
# importing the csv module
import csv
# my data rows as dictionary objects
mydict =[{'branch': 'COE', 'cgpa': '9.0', 'name': 'Nikhil', 'year': '2'},
{'branch': 'COE', 'cgpa': '9.1', 'name': 'Sanchit', 'year': '2'},
{'branch': 'IT', 'cgpa': '9.3', 'name': 'Aditya', 'year': '2'},
{'branch': 'SE', 'cgpa': '9.5', 'name': 'Sagar', 'year': '1'},
{'branch': 'MCE', 'cgpa': '7.8', 'name': 'Prateek', 'year': '3'},
{'branch': 'EP', 'cgpa': '9.1', 'name': 'Sahil', 'year': '2'}]
# field names
fields = ['name', 'branch', 'year', 'cgpa']
# name of csv file
filename = "university_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv dict writer object
writer = csv.DictWriter(csvfile, fieldnames = fields)
# writing headers (field names)
writer.writeheader()
# writing data rows
writer.writerows(mydict)
4 写在最后
本节给大家介绍了Python中处理CSV数据。很重要的内容,但是初学者很容易过分钻研,实则没什么必要,CSV在很多地方有很重要的应用,如果你的项目中用到了它,别忘了python中存在csv这个很方便的工具(当然你也可以使用pandas)。勤能补拙是良训,希望大家还是动手做一做,有问题可以私信我,欢迎交流和提出您的宝贵意见。
勘误:
由于我自己也不是资深编程高手,在创作此内容时尽管已经力求精准,查阅了诸多资料,还是难保有所疏漏,如果各位发现有误可以公众号内留言,欢迎指正。
你要偷偷学Python,然后惊艳所有人。
-END-
感谢大家的关注
你关心的,都在这里