Python数据整理
上QQ阅读APP看书,第一时间看更新

活动4:设计专属CSV解析器

作为一个数据从业人员,在生活中会遇到很多CSV文件。CSV是一个逗号分隔的文件,其中表格数据通常使用逗号存储和分隔(也可使用其他字符)。

在这个活动中,我们将构建专属CSV阅读器和解析器。如果我们试图覆盖所有用例和边缘用例,以及转义字符等,这将是一项艰巨的任务。但是为了这次小型活动,我们将尽量减少我们的需求。我们假设没有转义符,也就是说,如果在行中的任何位置使用逗号,则意味着开始新的列。我们关注的唯一功能是它能够逐行读取一个CSV文件,而且每次读取都将生成一个新的字典,其中列名作为键,行名作为值。示例如图2-8所示。

图2-8 示例数据的表格

我们可以将上表中的数据转换为Python字典,如下所示:{"Name":"Bob","Age":"24","Location":"California"}:

1.从itertools导入zip_longest。定义一个包含header、line和fillvalue=None的函数。

2.在with块中使用r模式从Github链接中打开附带的sales_record.csv文件,并检查该文件是否已打开。

3.读取第一行并使用字符串方法生成所有列名的列表。

4.开始逐行读取文件。

5.读取每一行并将该行及标题列表传递给函数。该函数的工作是用这些数据构造一个字典并填充键,值。请注意,缺失的值应填充None。

说明

此活动的实施步骤可在附录中找到。