龙空技术网

技术干货:Python解析CSV

源码情报局 624

前言:

今天看官们对“csvpython”大概比较注重,同学们都想要了解一些“csvpython”的相关资讯。那么小编在网上搜集了一些有关“csvpython””的相关内容,希望大家能喜欢,大家快快来学习一下吧!

1. 什么是CSV

CSV(Commma-Separated Value)是都好分隔符,其文件以纯文本形式存储表格数据(数字和文本)。

案例:

学科编号,学科,开班时间,预计人数 1,Java,2018/8/9,50 2,PHP,2018/8/10,51 3,UI,2018/8/11,52 4,H5,2018/8/12,53 5,Python,2018/8/13,54 
2. 为什么要使用CSV

与专有的二进制文件格式截然不同,CSV通常用于在在电子表格软件和纯文本之间交互数据. 实际上,CSV都不算是一个真正的结构化数据,CSV文件内容仅仅是一些用逗号分隔的原始字符串值.

听起来好像很容易解析CSV文件,是吗? 可能不假所思地认只须调用str.split(",")即可. 但不能够这样做,因为有些字段可能含有嵌套的逗号,因此需要专门用于解析和生成CSV的库,如Python的csv库.

3. 案例

通过将源码时代的学科数据,以CSV格式输出到文件中,接着将同样的数据读出来显示在控制台上。

1. import csv 2. 3. DATA = ( 4. (u'学科编号', u'学科', u'开班时间', u'预计人数'), 5. (u'1', u'Java', u'2018/8/9', u'50'), 6. ('2', 'PHP', '2018/8/10', '51'), 7. ('3', 'UI', '2018/8/11', '52'), 8. ('4', 'H5', '2018/8/12', '53'), 9. ('5', 'Python', '2018/8/13', '54'), 10. ) 11. 12. print('*** 保存CSV数据') 13. f = open('xueke.csv', 'w', newline='') 14. writer = csv.writer(f) 15. for record in DATA: 16. writer.writerow(record) 17. f.close() 18. 19. print('*** 读取CSV数据') 20. f = open('xueke.csv', 'r', newline='') 21. reader = csv.reader(f) 22. for no, name, time, num in reader: 23. print('%s %s %s %s' % (no, name, time, num)) 24. f.close() 
4. 逐行解析

第1~10行

首先导入CSV模块. 紧接着就是数据集的导入语句. 该数据集是四元组,每个元组占用一列. 分别是学科编号, 学科 ,开班时间, 预计人数.

第12~17行

这一部分,csv.reader()函数与csv.writer()相反,用于返回一个可迭代对象,可以读取该对象并且解析为CSV数据的每一行. 与csv.writer()类似,csv.reader()也使用一个已打开文件的句柄,返回一个reader对象. 当逐行迭代数据时,CSV数据会自动解析并且返回给用户. 逐行显示数据处理完毕之后关闭文件.

除了csv.reader()和csv.write()之外,csv模块也提供了csv.DictReader类和csv.DictWriter类,用于将CSV数据都进到字典中(首先检查是否使用给定字段名,如果没有,就使用第一行作为键),接着讲字典字段写入CSV文件中.

标签: #csvpython