python中如何读取和写入CSV文件
本文小编为大家详细介绍“python中如何读取和写入CSV文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中如何读取和写入CSV文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型(注意:数字为字符串类型)。
如果CSV中有中文,应以utf-8编码读写.
1.导入CSV库
python中对csv文件有自带的库可以使用,当我们要对csv文件进行读写的时候直接导入即可。
import csv
2.对CSV文件进行读写
2.1 用列表形式写入CSV文件
语法:csv.writer(f):
writer支持writerow(列表)单行写入,和writerows(嵌套列表)批量写入多行,无须手动保存。
结果:import csvheader = ['name','age','QQ_num','wechat']data = [['suliang','21','787991021','lxzy787991021']]with open ('information.csv','w',encoding='utf-8',newline='') as fp: # 写 writer =csv.writer(fp) # 设置第一行标题头 writer.writerow(header) # 将数据写入 writer.writerows(data)
注意,打开文件时应指定格式为w, 文本写入.
打开文件时,指定不自动添加新行newline=‘’,否则每写入一行就或多一个空行。
2.2 用列表形式读取CSV文件
语法:csv.reader(f, delimiter=‘,’)
reader为生成器,每次读取一行,每行数据为列表格式,可以通过delimiter参数指定分隔符
结果:import csvwith open('information.csv',encoding='utf-8')as fp: reader = csv.reader(fp) # 获取标题 header = next(reader) print(header) # 遍历数据 for i in reader: print(i)
读取文件时文件路径务必要写对,不确定时可写绝对路径。要获取csv的内容则需要遍历再输出。
2.3 用字典形式写入csv文件
语法:csv.DicWriter(f):
写入时可使用writeheader()写入标题,然后使用writerow(字典格式数据行)或writerows(多行数据)
结果:import csvheader = ['name','age']data = [{'name':'suliang','age':'21'}, {'name':'xiaoming','age':'22'}, {'name':'xiaohu','age':'25'}]with open ('information.csv','w',encoding='utf-8',newline='') as fp: # 写 writer =csv.DictWriter(fp,header) # 写入标题 writer.writeheader() # 将数据写入 writer.writerows(data)
2.4 用字典形式读取csv文件
语法:csv.DicReader(f, delimiter=‘,’)
直接将标题和每一列数据组装成有序字典(OrderedDict)格式,无须再单独读取标题行
结果:import csvwith open('information.csv',encoding='utf-8')as fp: reader = csv.DictReader(fp) for i in reader print(i)
附:csv读写的模式
r:以读方式打开文件,可读取文件信息
w: 已写方式打开文件,可向文件写入信息。如文件存在,则清空,再写入
a:以追加模式打开文件,打开文件可指针移至末尾,文件不存在则创建
r+:以读写方式打开文件,可对文件进行读和写操作
w+:消除文件内容,以读写方式打开文件
a+:以读写方式打开文件,文件指针移至末尾
b:以二进制打开文件
读到这里,这篇“python中如何读取和写入CSV文件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341