我用 PyCharm 把 CSV 数据存储玩明白了
目录
一、写在前面:为啥突然想聊这个?
刚开始学爬虫的时候,要知道“数据爬下来不算完,存得明白才叫真本事”。当时看着CSV 表格截图,总觉得 “不就是存个表格吗,有啥难的”。直到自己上手用 PyCharm 敲代码,才发现从理论到实操,中间藏着不少 “小坑”—— 比如文件路径总写错、中文存进去变成乱码、不知道怎么对齐表格字段…… 折腾了两天总算摸透了门道,今天就借着这篇博客,跟大家聊聊我是怎么把 PPT 里的知识点变成实实在在的 CSV 文件的。
二、先聊聊 “数据存储经”
1、为啥选 CSV?
对比了 TXT、CSV、Excel 几种格式,说 CSV 是 “爬虫新手友好型”—— 结构简单(就是逗号分隔的表格)、体积小、几乎所有工具都能打开(txt、Excel、Python 库都认它)。不像 TXT 找数据得翻半天,也不像 Excel 需要额外装库,对我们这种刚入门的人来说,简直是 “懒人福音”。
2、合规爬取是前提
虽然这次重点是存数据,但 “爬虫不能瞎爬”。Robots 协议、User-Agent 限制这些,老师反复强调 “先看规矩再动手”。比如爬学校官网的新闻前,我特意去查了robots.txt,确认允许爬取才开始,这点新手一定要记牢!
三、实战环节:用 PyCharm 复现 CSV 存储全流程
1、准备工作:给 PyCharm “搭环境”
我用的是 PyCharm Community 版(免费够用),第一步当然是装库。PPT 里提到csv库是 Python 自带的,但如果要用pandas处理更复杂的表格,就得自己装:
在 PyCharm 的 Terminal 里敲命令:
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
(加镜像源是之前文章有的,下载速度能快一倍,实测有效!)
2、读取 iris.csv
iris.csv里存了鸢尾花的数据集,我的目标是用代码把它读出来,看看里面到底有啥。
csv.reader()示例写代码,刚开始踩了个坑:文件路径总报错。原来我把iris.csv随便存在了桌面,代码里写./iris.csv根本找不到。后来把文件挪到 PyCharm 的项目文件夹里,用相对路径才搞定。
代码长这样:
import csv
# 用with语句打开文件,自动处理关闭,比直接open()安全
with open('./iris.csv', 'r', encoding='utf-8') as csvfile:
# 创建reader对象,按行读取
reader = csv.reader(csvfile)
# 循环打印每一行数据
for i, row in enumerate(reader):
# 只打印前5行,避免输出太多刷屏
if i < 5:
print(row)
运行结果和 PPT 里的示例对上了:第一行是表头['Sepal.Length', 'Sepal.Width', ...],后面跟着具体数据,那一刻居然有点小成就感~
3、自己写一个 CSV 文件
光读还不够,得试试写数据。用csv.writer()写列表,用csv.DictWriter()写字典(支持中文更方便)。 我先试了写列表(存了几个同学的信息):
import csv
# 打开文件时加newline='',避免空行问题(PPT里没说,但实测不加会多空行)
with open('classmates.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
# 先写表头
writer.writerow(['学号', '姓名', '性别'])
# 再写数据行
writer.writerow(['2023001', '张三', '男'])
writer.writerow(['2023002', '李四', '女'])
打开生成的classmates.csv,用 Excel 打开是整整齐齐的表格,比手动输入快多了!
后来又试了字典写法(支持中文更稳妥),把代码里的writer换成DictWriter,指定fieldnames当表头,写的时候直接传字典,连字段顺序都不用操心,这点比列表方便太多。
4、用 pandas 玩点 “进阶操作”
pandas能一键转 CSV/Excel,我抱着试试的心态试了下。同样是存同学信息,用pandas一行代码就搞定存储,还自动加了索引:
import pandas as pd
# 先准备一个字典,键是表头,值是列表
data = {
'学号': ['2023003', '2023004'],
'姓名': ['王五', '赵六'],
'专业': ['计算机', '软件工程']
}
# 转成DataFrame(pandas的核心数据结构,像个表格)
df = pd.DataFrame(data)
# 存成CSV,index=False去掉自动生成的索引列
df.to_csv('major.csv', index=False, encoding='utf-8')
打开major.csv一看,比用csv库写的更整洁,难怪老师说处理大量数据时pandas是 “神器”。
四、踩坑总结:很重要 !
1、编码别偷懒
刚开始写中文名字时,存进去总是乱码。后来才发现 写了encoding='utf-8',但自己嫌麻烦没加,加上之后立马正常了 —— 中文数据一定要指定编码!
2、路径别瞎写
相对路径(./文件名)只在文件和代码同文件夹时管用,不然就得写绝对路径(比如D:/project/iris.csv),但 PyCharm 里用相对路径更方便管理。
3、用 with 语句更安全
一开始直接open()文件,写完忘了close(),结果文件被占用删不掉。换成with open(...) as f:后,再也没出过这问题,这是 强调的 “好习惯”。
五、最后:从 “看懂” 到 “会写”,只差一步动手
以前看 PPT 总觉得 “这有啥难的”,真自己敲代码才发现,很多细节只有实操才会注意到。比如csv.writer()和csv.DictWriter()的区别,pandas的to_csv()怎么去掉多余的索引 —— 这些都得自己试一遍才记得牢。
接下来打算试试老师布置的作业:爬学校新闻存成 CSV,争取用pandas优化一下格式。如果大家也在学爬虫数据存储,不妨从 CSV 开始练手,真的不难,动手敲代码比光看 PPT 有用多啦~
(偷偷说:PyCharm 的自动补全功能救了我,输csv.wri会显示writer(),新手一定要善用!)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)