用于循环串联字符串作为批量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:PyTestTest 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() 

理想情况下,我不想创建新的文件来复制文本到/保存,因为这个功能是作为一个更广泛的功能的一部分:

  1. 遍历一个大的文件目录
  2. 在目录树中的每个pdf文档中搜索搜索词的列表
  3. 打印在其中找到的文件名和文件的创建日期
  4. 如果可能的话,打印它所在的句子(理想情况下,我喜欢这个段落,但需要进一步探索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()])

最新更新