主要内容:
文档编码和类型的介绍;
读取CSV、PDF等格式的文件。
读取文档
文档编码
文档编码的方式通常可以根据文件的扩展名进行判断,虽然文件扩展名并不是由编码确定的,而是由开发者确定的。从最底层的角度看,所有文档都是由 0
和 1
编码而成的。例如我我们将一个后缀为png
的图片后缀改为.py
。用编辑器打打开就完全不对了。
只要安装了合适的库, Python
就可以帮你处理任意类型的文档。纯文本文件、视频文件和图像文件的唯一区别,就是它们的 0
和1
面向用户的转换方式不同。
纯文本
对于纯文本的文件获取的方式很简单,用 urlopen
获取了网页之后,我们会把它转变成 BeautifulSoup
对象。
1 | from urllib.request import urlopen |
CSV 文件
Python
有一个标准库对CSV
文件的处理特别的友好,可以处理各类的CSV
文件。文档地址
读取CSV文件
Python
的csv
库主要是面向本地文件,就是说你的 CSV
文件得存储在你的电脑上。而进行网络数据采集的时候,很多文件都是在线的。有几个参考解决办法:
- 手动把CSV文件下载到本机,然后用Python定位文件位置;
- 写Python程序下载文件,读取之后再把源文件删除;
- 从网上直接把文件读成一个字符串,然后转换成一个StringIO对象,使它具有文件的
属性。
例如获取网上的CSV
文件,然后输出命令行。
1 | from urllib.request import urlopen |
输出的结果:
1 | ['Name', 'Year'] |
PDF 文件
PDFMiner3K
是一个非常好用的库(是PDFMiner
的Python 3.x
移植版)。它非常灵活,可以通过命令行使用,也可以整合到代码中。它还可以处理不同的语言编码,而且对网络文件的处理也非常方便。
下载解压后用python setup.py install
完成安装。
模块的源文件下载地址: https://pypi.python.org/pypi/pdfminer3k
例如可以把任意 PDF
读成字符串,然后用 StringIO
转换成文件对象。
1 | from urllib.request import urlopen |
readPDF
函数最大的好处是,如果PDF
文件在电脑里,就可以直接把 urlopen
返回的对象 pdfFile
替换成普通的 open()
文件对象:
1 | pdfFile = open("./chapter1.pdf", 'rb') |