- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
5.6 小结
PDF 以及其他难以解析的格式,是你会遇到的最糟糕的格式。如果你找到这些格式的数据,应该做的第一件事就是看能否找到其他格式的数据。对于我们的例子来说,我们从 CSV 格式得到的数据更为精确,因为 PDF 表格中的数字是经过四舍五入的。越是原始的数据格式,数据可能就越精确,用代码解析也越容易。
如果找不到其他格式的数据,那你应该尝试以下步骤。
(1) 确定数据类型。
(2) 在互联网上搜索其他人解决问题的方法。有没有帮助导入数据的工具?
(3) 凭直觉选择你要用的工具。如果是 Python,选择你认为最合适的库。
(4) 尝试将数据转换成更容易使用的格式。
表 5-1 列出了我们在本章学过的库和工具。
表5-1:新的Python库和工具
库或工具 | 作用 |
slate | 每次运行脚本时,都将 PDF 解析为内存里的一个字符串 |
pdfminer | 将 PDF 转换为文本,这样你就可以解析文本文件 |
pdftables | 首先用 pdfminer 将 PDF 解析成文本,然后尝试寻找表格,并将每一行内容对齐 |
Tabula | 提供操作界面,可以将 PDF 数据提取成 CSV 格式 |
除了上面这些新工具,我们还学习了 Python 编程的一些新概念,表 5-2 对这些新概念做了汇总。
表5-2:Python编程新概念
概念 | 作用 |
转义字符告诉计算机,文件路径或文件名中有一个空格或特殊字符,告知方式是在其前面加一个反斜线(\)。一种用法是在空格前加 \ 将其转义 | |
\n | \n 是文件中行尾或新行的标志 |
在写 if-else 语句的过程中,我们可以添加额外的条件再次测试:if...elif...elif...else | |
函数(https://docs.python.org/2/tutorial/controlflow.html#defining-functions) | Python 函数用来执行一段代码。将可复用的代码写成函数,我们可以避免多次重复 |
zip 是 Python 内置函数,将两个可迭代对象转换成由元组构成的列表 | |
元组(https://docs.python.org/2.7/library/functions.html#tuple) | 元组和列表类似,但是不可更改(immutable),也就是说,不能修改元组。想修改一个元组,需要将其保存为一个新对象 |
dict 转换(https://docs.python.org/2.7/library/functions.html#func-dict) | dict 是 Python 内置函数,将输入转换成字典。输入数据应满足键值对的形式,这样函数才能正常运行 |
下一章我们将讨论数据获取与存储。这样我们就能了解关于获取其他数据格式的更多内容。在第 7 章和第 8 章,我们会讲到数据清洗,这也对我们处理复杂的 PDF 有所帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论