028-86261949

当前位置:首页 > 技术交流 > Python解析CSV

Python解析CSV

2018/10/12 10:56 分类: 技术交流 浏览:40

1. 什么是CSV
CSV(Commma-Separated Value)是都好分隔符,其文件以纯文本形式存储表格数据(数字和文本)。
案例:
 
  1. 1. 学科编号,学科,开班时间,预计人数  
  2. 2. 1,Java,2018/8/9,50  
  3. 3. 2,PHP,2018/8/10,51  
  4. 4. 3,UI,2018/8/11,52  
  5. 5. 4,H5,2018/8/12,53  
  6. 6. 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