读写CSV文档

CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 “,” 分隔的一列列的数据构成的。

Python读取CSV文档

Python的库csv就是处理CSV文档的一个非常强大的库,我们要处理CSV文档,必须先导入它。
在这里插入图片描述

import csv


# 读取csv至字典
csvFile = open("instance.csv", "r")
reader = csv.reader(csvFile)

# 建立空字典
result = {}
for item in reader:
    # 忽略第一行
    if reader.line_num == 1:
        continue
    result[item[0]] = item[1]

csvFile.close()
print(result)

首先,跟文本文件一样,需要 open()函数将CSV文档打开,我在此将打开方式定义为只读。然后通过csv.reader()函数建立一个读入数据的对象,我起名为reader
建立的数据是个一对一的关系型数据,那索性就通过字典这种结构完成数据的读取,所以,建立了一个空字典result(后面会讲csv自带的将CSV文档读取为字典的函数)

reader对象其实就是由CSV文档的多行数据构成的,每行数据会有一个属性:line_num表示行数,显然,刚才的数据第一行”name,score”只是数据说明,我们忽略掉。
如果用for循环迭代访问reader,我们会发现,每一行都是一个列表,列表的每个元素就是CSV文档的每一行中 “,” 分隔开的数据。比如:

import csv

csvFile = open("instance.csv", "r")
reader = csv.reader(csvFile)

for item in reader:
    print(item) # >>> ['name', 'score']
                # >>> ['Zhang', '100']
                # >>> ['Wang', '80']
                # >>> ['Li', '90']

Python写入CSV文档

(1)直接写入

当然也可以将数据写入CSV文档,我们可以将数据以列表的形式写入:

import csv

# 文件头,一般就是数据名
fileHeader = ["name", "score"]

# 假设我们要写入的是以下两行数据
d1 = ["Wang", "100"]
d2 = ["Li", "80"]

# 写入数据

csvFile = open("instance.csv", "w")
writer = csv.writer(csvFile)

# 写入的内容都是以列表的形式传入函数
writer.writerow(fileHeader)
writer.writerow(d1)
writer.writerow(d1)

csvFile.close()

当然,每次写完一行之后,会自动换行,所以,写结果就是我们想要的形式:
在这里插入图片描述
需要注意的是最后还有一个空行。

当然,像这种写入多行的情况,可以用更方便的函数 writerows(),还是上面的例子,可以把三行写入的代码,换成以下一行。但是传入的参数是一个列表,每个元素代表需要写入的每行数据。得到的结果和上面是一样的。

writer.writerows([fileHeader, d1, d2])

(2)追加

除了直接写入,还能实现追加:还是刚才那个例子,我现在将一行新的数据添加到旧的数据后面,最后写入CSV

import csv

# 新增的数据行,以列表的形式表示
add_info = ["Guo", 150]

# 以添加的形式写入csv,跟处理txt文件一样,设定关键字"a",表追加
csvFile = open("instance.csv", "a")

# 新建对象writer
writer = csv.writer(csvFile)

# 写入,参数还是列表形式
writer.writerow(add_info)

csvFile.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值