python中利用CSV库读写csv文件

csv文件:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)

1.读文件:

首先我们先 看一下数据:

我们创建了两个csv文件,一个是英文的,一个是带有中文的

1.1 针对英文的读文件

import csv
f=open('data.csv','r')
data=csv.reader(f)
print(data)

for i in data:
    print(i)

1.2针对中文的读文件

import csv
f=open('dataCH.csv','r',encoding='utf-8')
data=csv.reader(f)
print(data)

for i in data:
    print(i)

需要加上,encoding='utf-8',不然会有乱码

2. 写文件

2.1 针对英文文件

import csv

'''
针对英文文件:写入CSV文件
'''

data=[('wangwu','19'),('sunwukong','20'),('tangseng','21')]

f=open('data.csv','w')
writer=csv.writer(f)

for i in data:
    writer.writerow(i)
    
f.close()

我们可以看到,每一次插入一条数据,就插入了一行空格,我们可以用加入参数newline=‘’  解决这个问题,而且这种写入是将csv中以前的数据全部清除了。

import csv

'''
针对英文文件:写入CSV文件
'''

data=[('wangwu','19'),('sunwukong','20'),('tangseng','21')]

f=open('data.csv','w',newline='')
writer=csv.writer(f)

for i in data:
    writer.writerow(i)
    
f.close()

2.2 针对中文文件

同样,我们也需要使用newline这个参数避免多一行空格的尴尬,另外,我们还需要加入编码格式的参数,不然会出现乱码情况。

import csv

'''
针对中文文件:写入CSV文件
'''

data=[('王五','19'),('孙悟空','20'),('唐僧','21')]

f=open('dataCH.csv','w',newline='',encoding='gbk')
writer=csv.writer(f)

for i in data:
    writer.writerow(i)
    
f.close()

3. csv.DictReader()用法

首先看一下英文data的数据

import csv

'''
针对英文文件:读CSV文件
将CSV 数据读进列表中(首先查找是否使用给定字段名,如果没有,就是用第一行作为键)
'''
f=open('data.csv','r')
reader=csv.DictReader(f)
for i in reader:
    print(i)
print(reader)
f.close()

4.csv.DictWriter()用法

import csv

'''
针对英文文件:写入CSV文件
直接字典字段写入到CSV文件中
'''

data={'name':'zhangsan','age':'22'}

with open('data.csv','w',newline='') as f:
    fieldnames={'name','age'}  # 表头
    writer=csv.DictWriter(f,fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(data)

有的时候,我们也会得到这个结果,顺序会发生变化,这个是因为Python的 dict 不保持顺序。

5.写读追加状态

'r':读
'w':写
'a':追加
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建)
'a+' ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值