提示:代码图片可以点击全屏查看,双指操作还可以放大缩小。

这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章。在本文中,我们将从Python for NLP的基础知识开始。我们将看到如何使用Python处理简单的文本文件和PDF文件。

处理文本文件

文本文件可能是你在NLP工作中遇到的最基本类型的文件。在本节中,我们将了解如何用Python读取文本文件,创建文本文件以及将数据写入文本文件。

阅读文本文件

使用以下文本创建一个文本文件,并使用“.txt”扩展名将其保存在本地目录中。

在我的例子中,我将名为“myfile.txt”的文件存储在我的D盘根目录中。

阅读文件的所有内容

现在让我们看看我们如何阅读文件的全部内容。第一步是指定文件的路径,如下所示:

要打开文件,你可以使用Python的内置open函数。如果你执行上面的代码并且没有看到错误,则表示你的文件已成功打开。确保将文件路径更改为保存文本文件的位置。

现在让我们看看myfile变量中存储了什么:

输出如下所示:

输出显示该myfile变量是myfile.txt文件的容器,并以只读模式打开文件。

如果指定了错误的文件路径,则可能会收到以下错误:

每当你得到Errno 2时,可能有两个原因。你的文件不存在或者你给open函数提供了错误的文件路径。

现在,让我们读一下该文件的内容。为此,你需要在myfile变量上调用read函数,如下所示:

在输出中,你应该可以看到文件的文本,如下所示:

现在,如果你尝试再次调用read,控制台上将不会打印任何内容:

这是因为一旦调用该read方法,光标就会移动到文本的末尾。因此,当你再次调用read时,不会显示任何内容,因为已经没有更多要打印的文本了。

一个解决这个问题的方案就是在调用read方法之后,调用seek方法并使用0作为参数。

这会将光标移回文本文件的开头。查看以下代码以了解其工作原理:

在输出中,你将看到文本内容被打印了两次。

一旦完成文件处理后,关闭文件以便其他应用程序可以访问显得非常重要。为此,你需要调用close方法。

逐行读取文件

我们也可以逐行读取文件内容,而不是一次读取文件的所有内容。为此,我们需要执行readlines方法,该方法可以将文本文件中的每一行作为列表项返回。

在输出中,你将看到文本文件中的每一行都变为了列表项:

在多数情况下,这会使文本更容易相处。例如,我们现在可以轻松遍历每一行并打印行中的第一个单词。

输出如下所示:

写入文本文件

要写入文本文件,只需在打开文件时将打开模式设置为w或w+。前者在写入模式下打开文件,后者在读取和写入模式下打开文件。如果该文件不存在,则会创建该文件。值得一提的是,如果你以w或w+模式打开一个文件时,则将移除所有的文件内容,如下所示:

在输出中,由于使用w+模式打开文件,因此屏幕上不会显示任何内容,文件的所有内容都已被删除。你可以附加文字来避免这种情况,我也会在下面提到。

现在,让我们使用write方法在文件中写一些内容。

在上面的脚本中,我们将文本写入文件,然后调用seek方法将光标移回开始,然后调用read方法读取文件的内容。在输出中,你将看到新添加的内容,如下所示:

通常,你不需要删除文件的现有内容。相反,你可能需要在文件末尾添加内容。

为此,你需要以a+模式打开文件,该模式能够添加和读取文件内容。

再次创建一个包含以下内容的文件,并在D盘根目录中将其保存为“myfile.txt”:

执行以下脚本以使用添加模式打开文件:

在输出中,你将看到文件的内容。

接下来,让我们在文件中添加一些文本。

现在我们再次阅读文件内容:

在输出中,你将在文末看到新添加的行,如下所示:

最后,在继续下一节之前,让我们看看在执行所需操作后如何使用上下文管理器自动关闭文件。

使用with关键字,如上所示,你不需要明确关闭文件。相反,上面的脚本打开文件,读取内容,然后自动关闭它。

处理PDF文件

除了文本文件,我们还经常需要使用PDF文件来执行不同的自然语言处理任务。默认情况下,Python没有任何可用于读取或写入PDF文件的内置库。但是我们可以使用PyPDF2库。

在我们使用PyPDF2库之前,需要安装它。如果你使用pip安装程序,则可以使用以下命令安装PyPDF2库:

或者,如果你使用的是Anaconda环境中的Python,则可以在conda命令提示符下执行以下命令:

注意:这里需要提到的是PDF文档可以从不同的来源创建,如word文档,图像等。在本文中,我们将只处理使用word文档创建的PDF文档。对于使用图像创建的PDF文档,还有其他专门的库,我将在后面的文章中解释。目前,我们只使用使用word文档生成的PDF文档。

作为可以使用的虚拟文档,你可以从以下链接下载PDF:http://www.bavtailor.com/wp-content/uploads/2018/10/Lorem-Ipsum.pdf

将下载的文档保存在D盘根目录下。

阅读PDF文档

要阅读PDF文档,首先,我们必须要像其他普通文件一样打开它。使用以下脚本:

值得一提的是,在打开PDF文件时,必须将模式设置为“读取二进制”的rb模式,因为大多数PDF文件都是二进制格式。

打开文件后,我们需要调用PyPDF2库中的PdfFileReader函数,如下所示:

现在使用pdf_document变量,我们可以执行各种读取功能。例如,要获取PDF文档中的总页数,我们可以使用以下numPages属性:

由于我们只有一页文档,在我们的PDF文档中,你将在结果中看到1。

最后,要从PDF文档中提取文本,首先需要使用getPage函数获取PDF文档的页面。

接下来,你可以调用extractText函数从特定页面中提取文本。

以下脚本从PDF的第一页中提取文本,然后将其打印在控制台上。

在结果中,你应该看到PDF第一页中的文本。

写入PDF文档

由于字体和其他约束,无法使用PyPDF2库直接将Python字符串写入PDF文档。但是,为了演示,我们将从PDF文档中读取内容,然后将该内容写入我们将创建的另一个PDF文件。

让我们首先阅读PDF文档第一页的内容。

上面的脚本读取了我们PDF文档的第一页。现在,我们可以使用以下脚本将第一页中的内容写入新的PDF文档:

上面的脚本创建了一个可用于将内容写入PDF文件的对象。首先,我们将向这个对象添加一个页面,并将我们从另一个PDF中检索到的页面传递给它。

接下来,我们需要打开一个具有wb(写二进制)权限的新文件。打开具有此类权限的文件会创建一个新文件,如果文件不存在的话。

最后,我们需要在PDF编写对象上调用write方法并将新创建的文件传递给它。

关闭mypdf和pdf_output_file文件,然后转到程序的工作目录。你应该在编辑器中看到一个新文件new_pdf_file.pdf。打开文件,你应该看到它包含来自原始PDF的第一页的内容。

让我们尝试阅读新创建的PDF文档的内容:

现在让我们使用一个更大的PDF文件。从以下链接下载PDF文件:

http://ctan.math.utah.edu/ctan/tex-archive/macros/latex/contrib/lipsum/lipsum.pdf

将其保存在本地目录中。下载文件的名称为“lipsum.pdf”。

执行以下脚本查看文件中的页数:

在输出中,你将看到打印出87,因为该PDF中有87页。让我们在控制台上打印文档中的所有页面:

在输出中,你将看到打印在屏幕上的PDF文档的所有页面。

结论

阅读和编写文本文档是开发自然语言处理应用程序的基本步骤。在本文中,我们解释了如何使用Python处理文本和PDF文件。我们看到了如何读写文本和PDF文件。在下一篇文章中,我们将开始讨论其他一些NLP任务,例如使用spaCy库进行词干化,词形还原化,标记化。

英文原文:https://stackabuse.com/python-for-nlp-working-with-text-and-pdf-files/
译者:狼行千里吃鸡

.tex类型文件怎么阅读_Python用于NLP :处理文本和PDF文件相关推荐

  1. python读取只读word只读_Python用于NLP :处理文本和PDF文件

    提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从Python for NLP的基础知识开始.我们将看到如 ...

  2. 利用python处理pdf文本_Python用于NLP :处理文本和PDF文件

    原标题:Python用于NLP :处理文本和PDF文件 提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从 ...

  3. python写入pdf文件_Python用于NLP :处理文本和PDF文件

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从Python for ...

  4. python文件处理pdf_Python用于NLP :处理文本和PDF文件

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从Python for ...

  5. 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库

    作者 | megha152 编译 | Flin 来源 | analyticsvidhya 介绍 PDF 代表便携式文档格式.它使用 .pdf 扩展名.这种类型的文件主要用于共享目的.它们不能被修改,从 ...

  6. android 手机 用短信发pdf文件,安卓手机什么pdf阅读器最好用?如何编辑pdf文件

    原标题:安卓手机什么pdf阅读器最好用?如何编辑pdf文件 现在手机上都会安装各种功能的应用app,以便应对工作或休闲娱乐的需求.那么你知道安卓手机上扫描pdf阅读器最好用吗?我认为一款好用的pdf阅 ...

  7. 好用的PDF阅读器下载之如何编辑修改PDF文件

    PDF文件已经成为办公常用文件格式,以其不易编辑二被广泛使用,可接触PDF文件,不可避免的就是编辑PDF文件,但大家一直都没有找到编辑PDF文件的方法,其实,一个简单的PDF阅读器就能轻松搞定. 一: ...

  8. .net core 文件流保存图片_如何将图片打包成PDF文件进行保存?

    如何将图片打包成PDF文件进行保存?我们都知道PDF文件是一种电子文档发行和数字化信息传播的理想文档格式,支持跨平台传输.对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以逼真地展现 ...

  9. python获取pdf页数_Python分割指定页数的pdf文件方法

    Python分割指定页数的pdf文件方法 如下所示: from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止 ...

最新文章

  1. golang:mime.Decode、mime.DecodeHeader
  2. 主宰全球的10大算法
  3. cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
  4. python找出函数最小值极其对应的自变量的值
  5. 8、计算机图形学——纹理的相关问题及解决办法
  6. oracle取消180天过期,Oracle密码过期如何取消密码180天限制及密码180天过期,账号锁住的问题...
  7. A different twist on pre-compiling JSPs--reference
  8. extmail mysql数据库 重启_centos 5.8 x86_64下安装mysql+postfix+extmail+extman+courier-authlib+courier-imap...
  9. 「前端组件化」该怎么理解?
  10. 一文带你探究Sentinel的独特初始化
  11. vs2008添加注释宏(暂未成功设置)
  12. 全志F1c100s主线linux入坑记录 (2)芯片超频
  13. 如何提高matlab的运算速度慢,如何提高 matlab 计算速度 运算效率
  14. 1-2 Verilog 4位 二选一 多路选择器
  15. python手机号码标记_python 判断号码是否可用(号码过滤)
  16. java中文分词的简单实现
  17. Angular8简单方式实现表格固定表头和冻结列
  18. 免费的 AI 动作捕捉工具 #Rokoko Video
  19. java成熟妇儿,偶见那妇(精典啊)
  20. Redis-AKF/CAP原则

热门文章

  1. CVPR 2019 | 旷视研究院提出ML-GCN:基于图卷积网络的多标签图像识别模型
  2. TensorSpace:超酷炫3D神经网络可视化框架
  3. java编程数据溢出问题_Java数据溢出代码详解
  4. h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
  5. 初中知识会不会影响计算机,初中计算机论文
  6. 【大白话系列】图解TCP三次握手【使用wireshark工具抓包分析TCP三次交互流程】
  7. Error:Kotlin: Module was compiled with an incompatible version of Kotlin
  8. Neko Finds Grapes
  9. mysql脚本转成oracle脚本_mysql脚本手动修改成oracle脚本
  10. jdk的logging我们Logger.getLogger(xxx)jdk都干了啥