Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

这是我的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:

将下载的文档保存在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文件:

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

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

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

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

结论

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

英文原文:https://stackabuse.com/python-for-nlp-working-with-text-and-pdf-files/

译者:狼行千里吃鸡

python写入pdf文件_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. .tex类型文件怎么阅读_Python用于NLP :处理文本和PDF文件

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

  4. python写入txt乱码_Python 2.7 解决写入文件的中文乱码问题

    续:python之xml文件处理的例子-问题描述及解决方法 从一个文件中读入中文字符再写入到另一个文件中,遇到中文乱码问题.学习到一个方法解决这个问题,分享如下. 环境: python 2.7 背景: ...

  5. python安装os模块_python的os模块(ipython,文件,目录,权限,管理)

    什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...

  6. python爬虫今日头条_python爬虫—分析Ajax请求对json文件爬取今日头条街拍美图

    python爬虫-分析Ajax请求对json文件爬取今日头条街拍美图 前言 本次抓取目标是今日头条的街拍美图,爬取完成之后,将每组图片下载到本地并保存到不同文件夹下.下面通过抓取今日头条街拍美图讲解一 ...

  7. python运行pyc文件_Python什么情况下会生成pyc文件?

    作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从源码运 ...

  8. python解压zip文件_Python中最快解压zip文件的方法

    假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...

  9. python解析log文件_python解析基于xml格式的日志文件

    大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本. 首先,同样的先看看日志是个啥样. 都是xml格式的,是不是看着就头晕了??没事,我 ...

最新文章

  1. 如何打造项目级硬核简历,成为一名合格的大厂工程师(必看)
  2. PinkLotar 外挂汉化版+Mod 工具
  3. HDLBits 系列(24)进入FSM(有限状态机)的世界入口
  4. GNOME Shell Extensions开发介绍
  5. SAP CRM One order里user status和system status的mapping逻辑
  6. An ffmpeg and SDL Tutorial
  7. 跟着石头哥哥学cocos2d-x(四)--cocos2dx中的动画以及TexturePacker使用
  8. 【TensorFlow】池化层max_pool中两种paddding操作
  9. PaddlePaddle(7)—— 项目全流程实战:公共场所吸烟检测与EasyEdge部署
  10. 机器博弈 (三) 虚拟遗憾最小化算法
  11. 数字头盔摄像头是一个智能选项
  12. 一个黑客都要学习什么语言呢?
  13. 60万餐厅数据为你画出全国美食地图(附技术讲解)
  14. 华为nova2自带计算机,华为Nova2 root图文教程 华为Nova2获取root权限的方法
  15. c++实现图书管理系统v2.0
  16. matlab 输出矩阵 逗号隔开,在MATLAB中自定义矩阵时,矩阵同行元素之间用逗号隔开,而每一行元素之间用分号隔开。...
  17. Excel导出 并完成后自动打开
  18. 概率论学习二、样本空间与事件
  19. HTML+CSS大作业 使用html+css实现一个静态的汽车页面(含源码)
  20. HOW2J的JAVASE刷题一

热门文章

  1. for循环布局多个视图
  2. 金融IT的“困”与“道”
  3. RN8209C单相电量计量芯片调试记录
  4. 宏定义和函数有何区别
  5. 编写一个函数isprime(n).判断整数n是否为素数.编写程序使用此函数,当输入一个整数时,对它进行判断,当为素数时,输出1.否则,输出0....
  6. mysql查看时区 go时区问题
  7. 基于ssm的志愿者招募网站设计与实现-计算机毕业设计源码+LW文档
  8. CodeForces 1216CodeForces 1221 A~D
  9. POJO和PO的概念,区别
  10. web performance tu ning