如何解决for循环连接字符串,作为批量PDF阅读和搜索的一部分
希望获得一些帮助,以便在for循环中连接文本字符串。我写了下面的代码。但是,我的for page_num in range(no_pages)
循环仅将PDF的最后一页添加到变量all_text中。我在做什么错了?
如果执行以下操作,则会正确连接文本。 PDF文件长达两页(no_pages = 2)
page1 = pdfReader.getPage(0).extractText()
page2 = pdfReader.getPage(1).extractText()
all_text = page1 + page2
这是我在测试文件“ H:\ PyTest \ Test file 3.pdf”上的完整代码。
import os
import datetime
import PyPDF2
import nltk
from nltk.tokenize import sent_tokenize,word_tokenize
search_dir = 'H:\PyTest\Test file 3.pdf'
pdfFileObj = open(search_dir,'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
no_pages = pdfReader.numPages
no_pages
for page_num in range(no_pages):
all_text = ""
new_text = pdfReader.getPage(page_num).extractText()
all_text += new_text
print(sent_tokenize(all_text))
word_search = ['Random','Dynamic','Company','Stake','results']
for item in word_search:
if item in all_text:
print(item + ': Found')
else:
print(item + ': Not Found')
pdfFileObj.close()
理想情况下,我不想创建新文件来将文本复制到/保存,因为此功能是作为以下更广泛功能的一部分而存在的:
- 浏览大型文件目录,
- 在目录树中的每个pdf文档中搜索搜索词列表,
- 打印在其中找到的文件名和文件的创建日期
- 如果可能的话,打印其中的句子(理想情况是希望该段落,但需要进一步探索nltk来查看是否可行)。
为了确认,这是一段不正常的代码:
for page_num in range(no_pages):
all_text = ""
new_text = pdfReader.getPage(page_num).extractText()
all_text += new_text
解决方法
每次for
为空all_text
时,在您的''
循环中
您需要将all_text = ''
放在循环之前
all_text = ""
for page_num in range(no_pages):
new_text = pdfReader.getPage(page_num).extractText()
all_text += new_text
Python级的字符串连接方式是将join
方法与list comprehension
一起使用。
all_text = ''.join([text for text in pdfReader.getPage(page_num).extractText()])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。