当前位置: 首页 > 科技观察

使用Python从电子表格中读取数据

时间:2023-03-18 02:26:22 科技观察

Python是最流行和最强大的编程语言之一。由于它是免费和开源的,所以每个人都可以使用它。这种语言已经安装在大多数Fedora系统上。Python可用于各种任务,包括处理逗号分隔值(CSV)数据。CSV文件通常以表格或电子表格开始。本文解释了如何在Python3中使用CSV数据。CSV数据就是它听起来的样子。CSV文件将数据放在行中,值以逗号分隔。每行由相同的字段定义。简短的CSV文件通常易于阅读和理解。但是更长的数据文件或具有更多字段的数据文件可能难以用肉眼解析,因此计算机在这种情况下做得更好。这是一个简单的示例,其中的字段是姓名、电子邮件和国家/地区。在此示例中,CSV数据将字段定义作为第一行,但情况并非总是如此。姓名、电子邮件、国家JohnQ.Smith,jqsmith@example.com,USAPetrNovak,pnovak@example.com,CZBernardJones,bjones@example.com,UK从电子表格中读取CSVPython包括一个读取和写入CSV数据的csv模块。大多数电子表格应用程序,无论是原生的(例如Excel或Numbers)还是基于网络的(例如Google表格),都可以导出CSV数据。事实上,许多发布表格报告的其他服务也可以导出为CSV(例如PayPal)。Pythoncsv模块有一个名为DictReader的内置阅读器方法,可以将每一行数据作为有序字典(OrderedDict)处理。它需要一个文件对象来访问CSV数据。因此,如果上面的文件是当前目录中的example.csv,则以下代码片段是获取此数据的一种方法:f=open('example.csv','r')fromcsvimportDictReaderd=DictReader(f)data=[]forrowind:data.append(row)现在,内存中的数据对象是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类中的randrange函数正是我所需要的。你可以给它一个规则的数字范围(比如整数),以及它们之间的步长值。然后该函数生成一个随机结果,这意味着我得到了数据总行数范围内的随机整数(或者更确切地说是行号)。这个小程序工作正常:fromcsvimportDictReaderfromrandomimportRandomd=DictReader(open('mydata.csv'))data=[]forrowind:data.append(row)r=Random()winner=data[r.randrange(0,len(data),1)]print('获胜者是:',winner['Name'])print('Emailaddress:',winner['Email'])显然,这个例子是很简单。电子表格本身包含用于分析数据的复杂方法。但是,如果您想在电子表格应用程序之外做一些事情,Python可能是个窍门!