我试图在Jupyter笔记本中使用PyPDF2解析pdf。下面是我想如何编写代码的不同部分,也就是说,提取文本语句在一个单元格和RegEx在一个新的单元格。然而,如果我像下面这样分开这两段代码,RegEx只运行文件的最后一页,而不是整个文件(12页)。为什么会发生这种情况?我真的很想使用不同的单元格。
import PyPDF2
import re
file = open(r'file.pdf', 'rb')
doc = PyPDF2.PdfFileReader(file)
#print(doc.getNumPages())
#新细胞
for i in range(0, 12):
page = doc.getPage(i)
text = page.extractText()
#print(text)
#新细胞
doc_re = re.compile(r'Sd+_d+', re.IGNORECASE)
result = doc_re.findall(text)
print(result)
每次运行for
循环时,都要使用text = page.extractText()
重置文本的值RegEx运行在什么你给它,这是text
。即使循环运行超过12页,代码的第二个单元格也会接收text
的最终值(这是您在循环的最后一次迭代中为其指定的值)。
您可以将代码从for循环中的第二个单元格中移开,或者更好的选择是将每个页面的文本添加到文本中。
所以,把text =
变成text +=
应该能解决你的问题。