希望在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()
理想情况下,我不想创建新的文件来复制文本到/保存,因为这个功能是作为一个更广泛的功能的一部分:
- 遍历一个大的文件目录
- 在目录树中的每个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()])