您的位置 首页 php

技术干货:Python解析CSV

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文件中.

文章来源:智云一二三科技

文章标题:技术干货:Python解析CSV

文章地址:https://www.zhihuclub.com/152532.shtml

关于作者: 智云科技

热门文章

网站地图