python - csv

CSV,全称为Comma-Separated Values,中文可以叫作逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。不过所有记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。它比Excel文件更加简介,XLS文本是电子表格,它包含了文本、数值、公式和格式等内容,而CSV中不包含这些内容,就是特定字符分隔的纯文本,结构简单清晰。所以,有时候用CSV来保存数据是比较方便的。【引自崔庆才的《python3网络爬虫开发实战》】
我在使用爬虫进行数据 存储的时候,若不使用数据库,则更多的会选择csv。

现有test.csv,内容如下:

学号 姓名 性别 年龄
1 小明 11
2 小花 12
3 小李 13

一.读

import csv
 
with open('test.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

运行结果:

['学号', '姓名', '性别', '年龄']
['1', '小明', '男', '11']
['2', '小花', '女', '12']
['3', '小李', '男', '13']
  • 这里的encoding视文件的具体编码格式决定,不一定是utf-8;
  • 上面的reader为可迭代对象,也是迭代器,故若不要第一行列索引,可直接在for前面进行next(reader),迭代一次,从而没有第一行数据;
  • 可用isinstance()判断一个对象是否为某种类型,如下:
from collections import Iterable, Iterator
isinstance(对象, Iterable) 
isinstance(对象, Iterator)

二.写

1.列表

将数据写入形成如上的test.csv

import csv

with open('test.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['学号', '姓名', '性别', '年龄'])
    writer.writerow(['1', '小明', '男', '11'])
    writer.writerow(['2', '小花', '女', '12'])
    writer.writerow(['3', '小李', '男', '13'])

或使用writerows ,很明显writerow为一行一行地写入,writerows为多行一起写入:

import csv

row1 = ['学号', '姓名', '性别', '年龄']
row2 = ['1', '小明', '男', '11']
row3 = ['2', '小花', '女', '12']
row4 = ['3', '小李', '男', '13']
with open('test.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows([row1, row2, row3, row4])

若csv文件出现隔行的情况,则需要加入参数newline=''

2.字典

import csv

headers = ['学号', '姓名', '性别', '年龄']
rows = [
        {'学号':1,'姓名':'小明','性别':'男','年龄':11},
        {'学号':2,'姓名':'小花','性别':'女','年龄':12},
        {'学号':3,'姓名':'小李','性别':'男','年龄':13},
    ]
with open('test.csv','w',newline='') as csvfile:
    writer= csv.DictWriter(csvfile,headers)
    writer.writeheader()
    writer.writerows(rows)
  • 写入csv中的数据可以为字符串也可以为其他数据类型,但读的时候会都转为字符串;
  • 若写入方式为'a'追加,则可以把 writer.writeheader() 去掉,否则会再次写入列索引,但无论w还是a,列索引headers 还是要定义的...

二.特别注意

csv说白了就是文本文件,所以不存在多个sheet的问题

【持续更新中,错误请指出,谢谢!!!】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,597评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,053评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,583评论 0 326
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,888评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,772评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,536评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,922评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,554评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,838评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,861评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,677评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,483评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,928评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,104评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,403评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,945评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,156评论 2 339