使用电子表格中的数据 Fedora 使用 Python

[ad_1]

Python 是最流行和最强大的编程语言之一。 因为它是免费和开源的,所以每个人都可以使用——而且大多数 Fedora 系统附带已安装的语言。 Python 可用于多种任务,但其中之一是处理逗号分隔值 (CSV) 数据。 CSV 文件通常以表格或电子表格的形式开始。 本文展示了如何开始在 Python 3 中使用 CSV 数据。

CSV 数据正是它听起来的样子。 CSV 文件一次包含一行数据,数据值以逗号分隔。 每行都由相同的字段定义。 简短的 CSV 文件通常很容易阅读和理解。 但是更长的数据文件,或者包含更多字段的数据文件,用肉眼可能更难解析,因此计算机在这些情况下工作得更好。

这是一个简单的示例,其中字段为姓名、电子邮件和国家/地区。 在此示例中,CSV 数据包括一个字段定义作为第一行,尽管情况并非总是如此。

Name,Email,Country
John Q. Smith,[email protected],USA
Petr Novak,[email protected],CZ
Bernard Jones,[email protected],UK

从电子表格中读取 CSV

Python 包含一个 csv 模块,该模块具有读取和写入 CSV 数据的功能。 大多数电子表格应用程序(包括 Excel 或 Numbers 等本机应用程序以及 Google 表格等基于网络的应用程序)都可以导出 CSV 数据。 事实上,许多其他可以发布表格报告的服务也将导出为 CSV(例如 PayPal)。

Python csv 模块有一个名为 DictReader 的内置读取器方法,可以将每个数据行作为有序字典 (OrderedDict) 处理。 它需要一个文件对象来访问 CSV 数据。 因此,如果我们上面的文件在当前目录中名为 example.csv,则此代码片段是获取此数据的一种方法:

f = open('example.csv', 'r')
from csv import DictReader
d = DictReader(f)
data = []
for row in d:
    data.append(row)

现在内存中的数据对象是一个 OrderedDict 对象列表:

[OrderedDict([('Name', 'John Q. Smith'),
               ('Email', '[email protected]'),
               ('Country', 'USA')]),
  OrderedDict([('Name', 'Petr Novak'),
               ('Email', '[email protected]'),
               ('Country', 'CZ')]),
  OrderedDict([('Name', 'Bernard Jones'),
               ('Email', '[email protected]'),
               ('Country', 'UK')])]

引用这些对象中的每一个都很容易:

>>> print(data[0]['Country'])
USA
>>> print(data[2]['Email'])
[email protected]

顺便说一句,如果您必须处理没有字段名称标题行的 CSV 文件,DictReader 类允许您定义它们。 在上面的示例中,添加 fieldnames 参数并传递名称序列:

d = DictReader(f, fieldnames=['Name', 'Email', 'Country'])

一个真实世界的例子

我最近想从一长串个人中随机挑选一个获胜者。 我从电子表格中提取的 CSV 数据是一个简单的姓名和电子邮件地址列表。

幸运的是,Python 也有一个有用的随机模块,用于生成随机值。 该模块的 Random 类中的 randrange 函数正是我所需要的。 你可以给它一个常规范围的数字——比如整数——以及它们之间的步长值。 该函数然后生成一个随机结果,这意味着我可以在我的数据的总行数中得到一个随机整数(或行号!)。

所以这个小程序运行良好:

from csv import DictReader
from random import Random

d = DictReader(open('mydata.csv'))
data = []
for row in d:
    data.append(row)

r = Random()
winner = data[r.randrange(0, len(data), 1)]
print('The winner is:', winner['Name'])
print('Email address:', winner['Email'])

显然这个例子非常简单。 电子表格本身包括分析数据的复杂方法。 但是,如果您想在电子表格应用程序范围之外做一些事情,Python 可能就是诀窍!

摄影者 艾萨克·史密斯不飞溅.

[ad_2]

Related Posts