CSV表格数据的读写
浏览 1511
课文
在python里面我们处理 CSV 格式数据需要 csv
模块。
这模块 python 已经自带了,我们无需安装。
认识一下CSV格式的文件
针对 CSV 格式的文件我们通常会用Excel打开。
约定俗成的情况下第一行通常是列名,之后的内容是数据。
然后我们也可以用记事本或 vscode
之类的编辑器直接打开 csv 格式的文件, 打开后我们可以一目了然地发现。CSV是一种很简单的保存文件的格式,直接是明明白白地把表格当成文本来保存,针对每列的数据以 ,
(逗号) 作为区分。
*,
逗号是最常见的分隔符,也有以其他符号作为分隔符的情况存在。*
了解了这些对我们更好地操作 csv
格式的文件就有了很大的帮助。
CSV文件的读取
import csv
with open("截至2020年12月16日B站电竞行业播放数前100位的视频情况.csv", encoding="utf-8") as csvfile:
spamreader = csv.reader(csvfile, delimiter=",")
for row in spamreader:
print(" ".join(row))
打开文件时的encoding
参数表示我们用什么编码打开文件,这必须与我们的文件保存编码一致。
这个文件当初保存时是 utf-8
的编码,因此我这里标记了使用 utf-8
的编码。
当同学们在读取一个文件字符报错或乱码时,第一反应应该去检查自己的编码对不对。
单位:见下方表格
视频名称 UP主 播放量(次) 弹幕数(个) 投稿日期
Lying man第二季 小辉辉特困生 3547000 266000 2015-11-09
卢本伟White五五开的生化危机7 的墨迹之旅 四季皆你 2957000 133000 2017-01-28
大家好,我是EDG.Clearlove,今天我入驻B站辣! EDG_Clearlove 3297000 95000 2020-07-09
......
CSV文件的写入
下面这几行代码完成一个基本CSV表格的写入。
import csv
with open(
"employee_file.csv", mode="w", encoding="utf-8-sig", newline=""
) as employee_file:
employee_writer = csv.writer(employee_file, delimiter=",")
employee_writer.writerow(["小明", "程序员", "22"])
employee_writer.writerow(["鸣人", "火影", "20"])
employee_writer.writerow(["柯南", "小学生", "10"])
我们来看下那些参数,首先是打开一个文件时的几个参数:
mode='r'
这个代表着以写入方式打开文件encoding='utf-8-sig'
我们以utf-8-sig
的编码保存字符,utf-8-sig
有一个更常见的名字带有BOM的utf-8
。
用这种编码都是为了照顾CSV格式在 windows
系统中的显示,如果直接采用常见的 utf-8
则会在 windows
下的EXCEL中打开为乱码。
newline=''
表示我们禁止文件在写入时对换行符进行额外处理,因为 CSV 模块已经预处理过。
初始化一个 CSV writer 时的参数:
delimiter=','
以逗号作为分隔符
由于我们的第一行通常是列名, 我们可以添加一行。
employee_writer.writerow(["名称", "职业", "年龄"])
我们还有另一种写法:
with open(
"employee_file.csv", mode="w", encoding="utf-8-sig", newline=""
) as employee_file:
employee_writer = csv.DictWriter(
employee_file, delimiter=",", fieldnames=["名称", "职业", "年龄"]
)
employee_writer.writeheader()
employee_writer.writerow({"名称": "小明", "职业": "程序员", "年龄": "22"})
employee_writer.writerow({"名称": "鸣人", "职业": "火影", "年龄": "20"})
employee_writer.writerow({"名称": "柯南", "职业": "小学生", "年龄": "10"})
通过 csv 的 DictWriter
创建一个写入器, 在创建时通过 fieldnames
参数定义列名。并在之后写入时将字典作为参数,根据键名把值对应到相应的单元格上。
评论
暂无评论