for 循环连接字符串作为批量 PDF 读取和搜索的一部分
for loop concatenating strings as part of bulk PDF read and search
希望得到一些关于在 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()
理想情况下,我不想创建新文件来复制文本 to/save,因为此功能是作为更广泛功能的一部分:
- 浏览大量文件目录,
- 在目录树中搜索每个 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
连接字符串的 Pythonic 方法是使用 join
方法和 list comprehension
。
all_text = ''.join([text for text in pdfReader.getPage(page_num).extractText()])
希望得到一些关于在 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()
理想情况下,我不想创建新文件来复制文本 to/save,因为此功能是作为更广泛功能的一部分:
- 浏览大量文件目录,
- 在目录树中搜索每个 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
连接字符串的 Pythonic 方法是使用 join
方法和 list comprehension
。
all_text = ''.join([text for text in pdfReader.getPage(page_num).extractText()])