使用 Python 读取电子表格中的数据实例详解
Python是最流行、功能最强大的编程语言之一。由于它是自由开源的,因此每个人都可以使用。大多数Fedora系统都已安装了该语言。Python可用于多种任务,其中包括处理逗号分隔值(CSV)数据。CSV文件一开始往往是以表格或电子表格的形式出现。本文介绍了如何在Python3中处理CSV数据。
CSV数据正如其名。CSV文件按行放置数据,数值之间用逗号分隔。每行由相同的字段定义。简短的CSV文件通常易于阅读和理解。但是较长的数据文件或具有更多字段的数据文件可能很难用肉眼解析,因此在这种情况下计算机做得更好。
这是一个简单的示例,其中的字段是Name、Email和Country。在此例中,CSV数据将字段定义作为第一行,尽管并非总是如此。
Name,Email,Country JohnQ.Smith,jqsmith@example.com,USA PetrNovak,pnovak@example.com,CZ BernardJones,bjones@example.com,UK
从电子表格读取CSV
Python包含了一个csv模块,它可读取和写入CSV数据。大多数电子表格应用,无论是原生(例如Excel或Numbers)还是基于Web的(例如GoogleSheet),都可以导出CSV数据。实际上,许多其他可发布表格报告的服务也可以导出为CSV(例如,PayPal)。
Pythoncsv模块有一个名为DictReader的内置读取器方法,它可以将每个数据行作为有序字典(OrderedDict)处理。它需要一个文件对象访问CSV数据。因此,如果上面的文件在当前目录中为example.csv,那么以下代码段是获取此数据的一种方法:
f=open('example.csv','r') fromcsvimportDictReader d=DictReader(f) data=[] forrowind: data.append(row)
现在,内存中的data对象是OrderedDict对象的列表:
[OrderedDict([('Name','JohnQ.Smith'), ('Email','jqsmith@example.com'), ('Country','USA')]), OrderedDict([('Name','PetrNovak'), ('Email','pnovak@example.com'), ('Country','CZ')]), OrderedDict([('Name','BernardJones'), ('Email','bjones@example.com'), ('Country','UK')])]
引用这些对象很容易:
>>>print(data[0]['Country']) USA >>>print(data[2]['Email']) bjones@example.com
顺便说一句,如果你需要处理没有字段名标题行的CSV文件,那么DictReader类可以让你定义它们。在上面的示例中,添加fieldnames参数并传递一系列名称:
d=DictReader(f,fieldnames=['Name','Email','Country'])
真实例子
我最近想从一长串人员名单中随机选择一个中奖者。我从电子表格中提取的CSV数据是一个简单的名字和邮件地址列表。
幸运的是,Python有一个有用的random模块,可以很好地生成随机值。该模块Random类中的randrange函数正是我需要的。你可以给它一个常规的数字范围(例如整数),以及它们之间的步长值。然后,该函数会生成一个随机结果,这意味着我可以在数据的总行数范围内获得一个随机整数(或者说是行号)。
这个小程序运行良好:
fromcsvimportDictReader fromrandomimportRandom d=DictReader(open('mydata.csv')) data=[] forrowind: data.append(row) r=Random() winner=data[r.randrange(0,len(data),1)] print('Thewinneris:',winner['Name']) print('Emailaddress:',winner['Email'])
显然,这个例子非常简单。电子表格本身包含了复杂的分析数据的方法。但是,如果你想在电子表格应用之外做某事,Python或许是一种技巧!
总结
到此这篇关于使用Python读取电子表格中的数据实例详解的文章就介绍到这了,更多相关python读取表格数据内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!